summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc
diff options
context:
space:
mode:
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.cc71
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 547dc463b..29be3cd21 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