void DeviceListing::discover() { qDebug() << "YYYY DeviceListing::discover()"; bb::system::SystemToast toast; toast.setBody(tr("Searching for Bluetooth LE devices ... please wait until search has completed ...")); toast.setPosition(bb::system::SystemUiPosition::MiddleCenter); toast.exec(); bt_disc_start_inquiry(BT_INQUIRY_GIAC); qDebug() << "XXXX done scanning"; bt_disc_cancel_inquiry(); toast.setBody(tr("Search completed!")); toast.exec(); update(); bt_remote_device_t *nextRemoteDevice = 0; qDebug() << "YYYY DeviceListing::discover() - about to call bt_disc_retrieve_devices(BT_DISCOVERY_ALL, 0)"; bt_remote_device_t **remoteDeviceArray = bt_disc_retrieve_devices(BT_DISCOVERY_ALL, 0); qDebug() << "YYYY DeviceListing::discover() - returned from bt_disc_retrieve_devices(BT_DISCOVERY_ALL, 0)"; if (remoteDeviceArray) { qDebug() << "YYYY DeviceListing::discover() - found devices"; for (int i = 0; (nextRemoteDevice = remoteDeviceArray[i]); ++i) { QVariantMap map; char buffer[128]; const int bufferSize = sizeof(buffer); qDebug() << "YYYY DeviceListing::discover() - checking device"; if (hasDeviceInformationService(nextRemoteDevice)) { qDebug() << "YYYY DeviceListing::discover() - found device information service"; bt_rdev_get_friendly_name(nextRemoteDevice, buffer, bufferSize); map["deviceName"] = QString::fromLatin1(buffer); qDebug() << "YYYY DeviceListing::discover() - name=" << QString::fromLatin1(buffer); bt_rdev_get_address(nextRemoteDevice, buffer); map["deviceAddress"] = QString::fromLatin1(buffer); map["deviceClass"] = QString::number(bt_rdev_get_device_class(nextRemoteDevice, BT_COD_DEVICECLASS)); map["deviceType"] = tr("Bluetooth Devices Nearby"); qDebug() << "YYYY DeviceListing::discover() - address=" << QString::fromLatin1(buffer); _model->insert(map); } else { qDebug() << "YYYY DeviceListing::discover() - no device information service"; } } qDebug() << "YYYY DeviceListing::discover() - freeing buffer"; bt_rdev_free_array(remoteDeviceArray); } qDebug() << "YYYY DeviceListing::discover() - returning"; }
void DeviceListing::discover() { bb::system::SystemToast toast; toast.setBody(tr("Searching for Bluetooth devices ... please wait until search completed ...")); toast.setPosition(bb::system::SystemUiPosition::MiddleCenter); toast.show(); bt_disc_start_inquiry(BT_INQUIRY_GIAC); delay(5); bt_disc_cancel_inquiry(); toast.cancel(); toast.setBody(tr("Search completed!")); toast.exec(); update(); bt_remote_device_t *nextRemoteDevice = 0; bt_remote_device_t **remoteDeviceArray = bt_disc_retrieve_devices(BT_DISCOVERY_CACHED, 0); if (remoteDeviceArray) { for (int i = 0; (nextRemoteDevice = remoteDeviceArray[i]); ++i) { QVariantMap map; char buffer[128]; const int bufferSize = sizeof(buffer); if (isAnImmediateAlertDevice(nextRemoteDevice)) { bt_rdev_get_friendly_name(nextRemoteDevice, buffer, bufferSize); map["deviceName"] = QString::fromLatin1(buffer); bt_rdev_get_address(nextRemoteDevice, buffer); map["deviceAddress"] = QString::fromLatin1(buffer); map["deviceClass"] = QString::number(bt_rdev_get_device_class(nextRemoteDevice, BT_COD_DEVICECLASS)); map["deviceType"] = tr("Bluetooth Devices Nearby Capable of Immediate Alert"); _model->insert(map); } else { qDebug() << "XXXX DeviceListing::update() - not an Immediate Alert device"; } } bt_rdev_free_array(remoteDeviceArray); } }