/*! Starts up device discovery. When devices are discovered signal deviceDiscovered is emitted. After signal deviceDiscoveryComplete() is emitted new discovery request can be made. */ void BluetoothLinkManagerDeviceDiscoverer::startDiscovery(const uint discoveryType) { if (!m_initialized) { /* find Bluetooth protocol */ TProtocolDesc protocol; int result = m_socketServer.FindProtocol(KBTLinkManagerTxt(),protocol); if (result == KErrNone) { /* Create and initialise an RHostResolver */ result = m_hostResolver.Open(m_socketServer, protocol.iAddrFamily, protocol.iProtocol); } if (result != KErrNone) { setError(result); return; } m_initialized = true; } m_discoveryType = discoveryType; if(m_pendingCancel == true) { m_pendingStart = true; m_pendingCancel = false; return; } if (!IsActive()) { m_addr.SetIAC( discoveryType ); #ifdef EIR_SUPPORTED m_addr.SetAction(KHostResInquiry | KHostResName | KHostResIgnoreCache | KHostResEir); #else m_addr.SetAction(KHostResInquiry | KHostResName | KHostResIgnoreCache); #endif m_hostResolver.GetByAddress(m_addr, m_entry, iStatus); SetActive(); } }
BluetoothLinkManagerDeviceDiscoverer::BluetoothLinkManagerDeviceDiscoverer(RSocketServ &socketServer,QObject *parent) : QObject(parent) , CActive(CActive::EPriorityStandard) , m_socketServer(socketServer) , m_pendingCancel(false), m_pendingStart(false), m_discoveryType (0) { TInt result; /* find Bluetooth protocol */ TProtocolDesc protocol; result = m_socketServer.FindProtocol(KBTLinkManagerTxt(),protocol); if (result == KErrNone) { /* Create and initialise an RHostResolver */ result = m_hostResolver.Open(m_socketServer, protocol.iAddrFamily, protocol.iProtocol); } // check possible error if (result != KErrNone) { setError(result); } //add this active object to scheduler CActiveScheduler::Add(this); }