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 | 71 |
1 files changed, 29 insertions, 42 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 547dc463b2..29be3cd219 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc @@ -1,4 +1,4 @@ -/** +/* * \file bluetooth_device_scanner.cc * \brief BluetoothDeviceScanner class header file. * @@ -52,6 +52,7 @@ #include "transport_manager/bluetooth/bluetooth_device.h" #include "utils/logger.h" +#include "utils/threads/thread.h" namespace transport_manager { namespace transport_adapter { @@ -117,44 +118,45 @@ BluetoothDeviceScanner::BluetoothDeviceScanner( }; sdp_uuid128_create(&smart_device_link_service_uuid_, smart_device_link_service_uuid_data); - thread_ = threads::CreateThread("BT Device Scaner", new BluetoothDeviceScannerDelegate(this)); + thread_ = threads::CreateThread("BT Device Scaner", + new BluetoothDeviceScannerDelegate(this)); } BluetoothDeviceScanner::~BluetoothDeviceScanner() { + thread_->join(); + delete thread_->delegate(); + threads::DeleteThread(thread_); } bool BluetoothDeviceScanner::IsInitialised() const { - return thread_->is_running(); + return thread_ && thread_->is_running(); } void BluetoothDeviceScanner::UpdateTotalDeviceList() { - LOG4CXX_TRACE(logger_, "enter"); + LOG4CXX_AUTO_TRACE(logger_); DeviceVector devices; devices.insert(devices.end(), paired_devices_with_sdl_.begin(), paired_devices_with_sdl_.end()); devices.insert(devices.end(), found_devices_with_sdl_.begin(), found_devices_with_sdl_.end()); controller_->SearchDeviceDone(devices); - LOG4CXX_TRACE(logger_, "exit"); } void BluetoothDeviceScanner::DoInquiry() { - LOG4CXX_TRACE(logger_, "enter"); + LOG4CXX_AUTO_TRACE(logger_); const int device_id = hci_get_route(0); if (device_id < 0) { LOG4CXX_INFO(logger_, "HCI device is not available"); shutdown_requested_ = true; controller_->SearchDeviceFailed(SearchDeviceError()); - LOG4CXX_TRACE(logger_, "exit. Condition: device_id < 0"); return; } int device_handle = hci_open_dev(device_id); if (device_handle < 0) { controller_->SearchDeviceFailed(SearchDeviceError()); - LOG4CXX_TRACE(logger_, "exit. Condition: device_handle < 0"); return; } @@ -195,6 +197,7 @@ void BluetoothDeviceScanner::DoInquiry() { &found_devices_with_sdl_); } UpdateTotalDeviceList(); + controller_->FindNewApplicationsRequest(); close(device_handle); delete[] inquiry_info_list; @@ -203,8 +206,6 @@ void BluetoothDeviceScanner::DoInquiry() { LOG4CXX_DEBUG(logger_, "number_of_devices < 0"); controller_->SearchDeviceFailed(SearchDeviceError()); } - - LOG4CXX_TRACE(logger_, "exit"); } void BluetoothDeviceScanner::CheckSDLServiceOnDevices( @@ -371,7 +372,7 @@ bool BluetoothDeviceScanner::DiscoverSmartDeviceLinkRFCOMMChannels( } void BluetoothDeviceScanner::Thread() { - LOG4CXX_TRACE(logger_, "enter"); + LOG4CXX_AUTO_TRACE(logger_); ready_ = true; if (auto_repeat_search_) { while (!shutdown_requested_) { @@ -394,12 +395,10 @@ void BluetoothDeviceScanner::Thread() { device_scan_requested_ = false; } } - - LOG4CXX_TRACE(logger_, "exit"); } void BluetoothDeviceScanner::TimedWaitForDeviceScanRequest() { - LOG4CXX_TRACE(logger_, "enter"); + LOG4CXX_AUTO_TRACE(logger_); if (auto_repeat_pause_sec_ == 0) { LOG4CXX_TRACE(logger_, "exit. Condition: auto_repeat_pause_sec_ == 0"); @@ -417,26 +416,22 @@ void BluetoothDeviceScanner::TimedWaitForDeviceScanRequest() { } } } - - LOG4CXX_TRACE(logger_, "exit"); } TransportAdapter::Error BluetoothDeviceScanner::Init() { - LOG4CXX_TRACE(logger_, "enter"); + LOG4CXX_AUTO_TRACE(logger_); if(!thread_->start()) { LOG4CXX_ERROR(logger_, "Bluetooth device scanner thread start failed"); - LOG4CXX_TRACE(logger_, "exit with TransportAdapter:Fail"); return TransportAdapter::FAIL; } LOG4CXX_INFO(logger_, "Bluetooth device scanner thread started"); - LOG4CXX_TRACE(logger_, "exit with TransportAdapter:OK"); return TransportAdapter::OK; } void BluetoothDeviceScanner::Terminate() { - LOG4CXX_TRACE(logger_, "enter"); + LOG4CXX_AUTO_TRACE(logger_); shutdown_requested_ = true; - if (thread_->is_running()) { + if (thread_) { { sync_primitives::AutoLock auto_lock(device_scan_requested_lock_); device_scan_requested_ = false; @@ -445,36 +440,30 @@ void BluetoothDeviceScanner::Terminate() { LOG4CXX_INFO(logger_, "Waiting for bluetooth device scanner thread termination"); thread_->stop(); - LOG4CXX_INFO(logger_, "PASA Bluetooth device scanner thread joined"); + LOG4CXX_INFO(logger_, "Bluetooth device scanner thread stopped"); } - LOG4CXX_TRACE(logger_, "exit"); } TransportAdapter::Error BluetoothDeviceScanner::Scan() { - LOG4CXX_TRACE(logger_, "enter"); + LOG4CXX_AUTO_TRACE(logger_); if ((!IsInitialised()) || shutdown_requested_) { - LOG4CXX_TRACE(logger_, "exit with TransportAdapter::BAD_STATE"); + LOG4CXX_WARN(logger_, "BAD_STATE"); return TransportAdapter::BAD_STATE; } if (auto_repeat_pause_sec_ == 0) { - LOG4CXX_TRACE(logger_, "exit with TransportAdapter::OK"); return TransportAdapter::OK; } TransportAdapter::Error ret = TransportAdapter::OK; - { - sync_primitives::AutoLock auto_lock(device_scan_requested_lock_); - if (false == device_scan_requested_) { - LOG4CXX_INFO(logger_, "Requesting device Scan"); - device_scan_requested_ = true; - device_scan_requested_cv_.NotifyOne(); - } else { - ret = TransportAdapter::BAD_STATE; - LOG4CXX_INFO(logger_, "Device Scan is currently in progress"); - } + sync_primitives::AutoLock auto_lock(device_scan_requested_lock_); + if (!device_scan_requested_) { + LOG4CXX_TRACE(logger_, "Requesting device Scan"); + device_scan_requested_ = true; + device_scan_requested_cv_.NotifyOne(); + } else { + ret = TransportAdapter::BAD_STATE; + LOG4CXX_WARN(logger_, "BAD_STATE"); } - - LOG4CXX_TRACE(logger_, "exit with Error: " << ret); return ret; } @@ -483,12 +472,10 @@ BluetoothDeviceScanner::BluetoothDeviceScannerDelegate::BluetoothDeviceScannerDe : scanner_(scanner) { } -void BluetoothDeviceScanner::BluetoothDeviceScannerDelegate::threadMain() -{ - LOG4CXX_TRACE_ENTER(logger_); +void BluetoothDeviceScanner::BluetoothDeviceScannerDelegate::threadMain() { + LOG4CXX_AUTO_TRACE(logger_); DCHECK(scanner_); scanner_->Thread(); - LOG4CXX_TRACE_EXIT(logger_); } } // namespace transport_adapter |