diff options
Diffstat (limited to 'src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc')
-rw-r--r-- | src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc b/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc index c561c50a75..4759b2003a 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc @@ -212,9 +212,40 @@ void BluetoothDeviceScanner::DoInquiry() { CheckSDLServiceOnDevices( paired_devices_, device_handle, &paired_devices_with_sdl_); UpdateTotalDeviceList(); + + LOG4CXX_INFO(logger_, "Starting hci_inquiry on device " << device_id); + const uint8_t inquiry_time = 8u; // Time unit is 1.28 seconds + const size_t max_devices = 256u; + inquiry_info* inquiry_info_list = new inquiry_info[max_devices]; + + const int number_of_devices = hci_inquiry(device_id, + inquiry_time, + max_devices, + 0, + &inquiry_info_list, + IREQ_CACHE_FLUSH); + + if (number_of_devices >= 0) { + LOG4CXX_INFO(logger_, + "hci_inquiry: found " << number_of_devices << " devices"); + std::vector<bdaddr_t> found_devices(number_of_devices); + for (int i = 0; i < number_of_devices; ++i) { + found_devices[i] = inquiry_info_list[i].bdaddr; + } + found_devices_with_sdl_.clear(); + CheckSDLServiceOnDevices( + found_devices, device_handle, &found_devices_with_sdl_); + } + UpdateTotalDeviceList(); controller_->FindNewApplicationsRequest(); close(device_handle); + delete[] inquiry_info_list; + + if (number_of_devices < 0) { + LOG4CXX_DEBUG(logger_, "number_of_devices < 0"); + controller_->SearchDeviceFailed(SearchDeviceError()); + } } void BluetoothDeviceScanner::CheckSDLServiceOnDevices( |