bluetoothengine/headsetsimulator/remotecontroller/src/bttools/hsrcdevicediscoverer.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/headsetsimulator/remotecontroller/src/bttools/hsrcdevicediscoverer.cpp Wed Sep 15 15:59:44 2010 +0200
@@ -0,0 +1,157 @@
+/*
+ * Component Name: Headset Simulator
+ * Author: Comarch S.A.
+ * Version: 1.0
+ * Copyright (c) 2010 Comarch S.A.
+ *
+ * This Software is submitted by Comarch S.A. to Symbian Foundation Limited on
+ * the basis of the Member Contribution Agreement entered between Comarch S.A.
+ * and Symbian Foundation Limited on 5th June 2009 (“Agreement”) and may be
+ * used only in accordance with the terms and conditions of the Agreement.
+ * Any other usage, duplication or redistribution of this Software is not
+ * allowed without written permission of Comarch S.A.
+ *
+ */
+
+#include "hsrcbttools.h"
+#include "debug.h"
+
+CHsRCDeviceDiscoverer* CHsRCDeviceDiscoverer::NewL(
+ MHsRCDeviceDiscovererObserver* aDeviceObserver, RSocketServ& aSServ )
+ {
+ CHsRCDeviceDiscoverer *self = CHsRCDeviceDiscoverer::NewLC(
+ aDeviceObserver, aSServ );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+CHsRCDeviceDiscoverer* CHsRCDeviceDiscoverer::NewLC(
+ MHsRCDeviceDiscovererObserver* aDeviceObserver, RSocketServ& aSServ )
+ {
+ CHsRCDeviceDiscoverer *self = new ( ELeave ) CHsRCDeviceDiscoverer(
+ aDeviceObserver, aSServ );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+CHsRCDeviceDiscoverer::~CHsRCDeviceDiscoverer()
+ {
+ TRACE_FUNC_ENTRY
+ Cancel();
+ iHRes.Close();
+ TRACE_FUNC_EXIT
+ }
+
+void CHsRCDeviceDiscoverer::DeviceSearchL()
+ {
+ TRACE_FUNC_ENTRY
+
+ Cancel();
+ ConnectHostResolverL();
+ iSearching = ETrue;
+ iHRes.GetByAddress( iSockAddr, iEntry, iStatus );
+ SetActive();
+
+ TRACE_FUNC_EXIT
+ }
+
+TBTDevAddr CHsRCDeviceDiscoverer::GetBTDevAddress()
+ {
+ return iDevAddr;
+ }
+
+CHsRCDeviceDiscoverer::CHsRCDeviceDiscoverer(
+ MHsRCDeviceDiscovererObserver* aDeviceObserver, RSocketServ& aSServ ) :
+ CActive( EPriorityNormal ), iSServ( aSServ ), iDeviceObserver(
+ aDeviceObserver )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+void CHsRCDeviceDiscoverer::ConstructL()
+ {
+ }
+
+void CHsRCDeviceDiscoverer::ConnectHostResolverL()
+ {
+
+ TRACE_FUNC_ENTRY
+ TProtocolDesc protDesc;
+ _LIT(KHsProtocolName,"BTLinkManager");
+ TProtocolName protName( KHsProtocolName );
+
+ User::LeaveIfError( iSServ.FindProtocol( protName, protDesc ) );
+ User::LeaveIfError( iHRes.Open( iSServ, protDesc.iAddrFamily,
+ protDesc.iProtocol ) );
+ iSockAddr.SetIAC( KGIAC );
+ iSockAddr.SetAction( KHostResInquiry | KHostResName );
+
+ TRACE_FUNC_EXIT
+
+ }
+
+void CHsRCDeviceDiscoverer::RunL()
+ {
+ TRACE_FUNC_ENTRY
+ TRACE_ERROR((_L("iStatus value = %d"), iStatus.Int()))
+
+ if ( iStatus.Int() == KErrNone )
+ {
+
+ //dev found
+ TInquirySockAddr& sockAddr = TInquirySockAddr::Cast( iEntry().iAddr );
+
+ TBuf <KDevAddrLength> devAddrBuf;
+ TBuf <KMaxBluetoothNameLen> devNameBuf;
+
+ sockAddr.BTAddr().GetReadable( devAddrBuf );
+ devNameBuf.Copy( iEntry().iName );
+
+ TBuf8 <KDevAddrLength> addrBuf8;
+ TBuf8 <KMaxBluetoothNameLen> nameBuf8;
+
+ addrBuf8.Copy( devAddrBuf );
+ nameBuf8.Copy( devNameBuf );
+
+ if ( iDeviceObserver )
+ {
+ iDeviceObserver->HandleDeviceFindSuccessL( addrBuf8, nameBuf8,
+ sockAddr.MajorServiceClass(),
+ sockAddr.MajorClassOfDevice(),
+ sockAddr.MinorClassOfDevice() );
+ }
+
+ // Get next device
+ iHRes.Next( iEntry, iStatus );
+ SetActive();
+ }
+ else
+ {
+ //Inquiry finished or error
+ Cancel();
+ iHRes.Close();
+ iSearching = EFalse;
+
+ if ( iDeviceObserver )
+ {
+ iDeviceObserver->HandleDeviceFindFailed( iStatus.Int() );
+ }
+ }
+ TRACE_FUNC_EXIT
+
+ }
+
+void CHsRCDeviceDiscoverer::DoCancel()
+ {
+ TRACE_FUNC_ENTRY
+
+ if ( iSearching )
+ {
+ iHRes.Cancel();
+ iHRes.Close();
+ }
+
+ TRACE_FUNC_EXIT
+
+ }