diff options
author | Justin Dickow <jjdickow@gmail.com> | 2015-02-20 09:11:18 -0500 |
---|---|---|
committer | Justin Dickow <jjdickow@gmail.com> | 2015-02-20 09:11:18 -0500 |
commit | a7c5d752cb75485baa0ded5226335d0f8eb10321 (patch) | |
tree | fbfd9251ada2cdcd5cf6a03a79887d08f6b496d7 /src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc | |
parent | b2b2233d866f102d3de339afa8ccaf37d3cf2570 (diff) | |
download | sdl_core-a7c5d752cb75485baa0ded5226335d0f8eb10321.tar.gz |
Bug Fixes and ImprovementsSynchronizationCommit
Fix Empty perform iteration request
Fix type of name from string to enum
SendLocation implemented on HTML5 HMI
Fixed PI response on VR rejection due to high priority.
Fix Apps not responsive/not able to start app/apps remain listed on SYNC even after USB disconnect
Mobile API change and processing capabilities
Change perform interaction request conditions.
Fix SDL must always start 3sec timer before resuming the HMILevel of the app
Remove redundant StartSavePersistentDataTimer() call.
Change wrong predicate name to right.
Added stream request handling feature
Made streaming timeout in media manager configurable
Put navi app in LIMITED in case of phone call
Handling of audio state for applications
Add stop streaming timeout into ini file
Implement HMILevel resumption for job-1
Fix result code ABORTED when interrupts it by Voice recognition activation
Fix incorrect value parameter unexpectedDisconnect in BCOnAppUnregistered
Fix SDL send BC.OnAppUnregistered with "unexpectedDisconnect" set to "true" in case received from HMI OnExitAllApplications {"reason":"MASTER_RESET"}
Fix Update ini file for iAP1 support
Current working directory added to image path
Fix helpers to make it workable with more then 2 parameters
DCHECK() for ManageMobileCommand() replaced with log message because the latter returns false in some regular situations (e.g. TOO_MANY_PENDING_REQUESTS, see SDLAQ-CRS-10)
Remove connection after closing.
Signed-off-by: Justin Dickow <jjdickow@gmail.com>
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 |