diff options
author | Justin Dickow <jjdickow@gmail.com> | 2015-01-26 11:15:48 -0500 |
---|---|---|
committer | Justin Dickow <jjdickow@gmail.com> | 2015-01-26 11:15:48 -0500 |
commit | 46ed776c537131e72747538488b213cf45f23e22 (patch) | |
tree | 4cad1abf411addfd72ab591c93edeb5d225d9a39 /src/components/transport_manager/src/usb/libusb | |
parent | a24079cb8de5563376dcf782cdb9fe3cae063841 (diff) | |
download | sdl_core-46ed776c537131e72747538488b213cf45f23e22.tar.gz |
Latest internal release - last bulk merge before pull request and gitflow!?
Smoke tested on Ubuntu 12.04
Signed-off-by: Justin Dickow <jjdickow@gmail.com>
Diffstat (limited to 'src/components/transport_manager/src/usb/libusb')
3 files changed, 25 insertions, 32 deletions
diff --git a/src/components/transport_manager/src/usb/libusb/platform_usb_device.cc b/src/components/transport_manager/src/usb/libusb/platform_usb_device.cc index 1ca1a54b32..103e03a4f6 100644 --- a/src/components/transport_manager/src/usb/libusb/platform_usb_device.cc +++ b/src/components/transport_manager/src/usb/libusb/platform_usb_device.cc @@ -1,4 +1,4 @@ -/* +/** * * Copyright (c) 2013, Ford Motor Company * All rights reserved. diff --git a/src/components/transport_manager/src/usb/libusb/usb_connection.cc b/src/components/transport_manager/src/usb/libusb/usb_connection.cc index b8096514bc..40891d3513 100644 --- a/src/components/transport_manager/src/usb/libusb/usb_connection.cc +++ b/src/components/transport_manager/src/usb/libusb/usb_connection.cc @@ -30,7 +30,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include <pthread.h> #include <unistd.h> #include <iomanip> @@ -52,7 +51,7 @@ CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager") UsbConnection::UsbConnection(const DeviceUID& device_uid, const ApplicationHandle& app_handle, TransportAdapterController* controller, - const UsbHandlerSptr usb_handler, + const UsbHandlerSptr& usb_handler, PlatformUsbDevice* device) : device_uid_(device_uid), app_handle_(app_handle), diff --git a/src/components/transport_manager/src/usb/libusb/usb_handler.cc b/src/components/transport_manager/src/usb/libusb/usb_handler.cc index 776bb56c5d..eb0ffdb4dc 100644 --- a/src/components/transport_manager/src/usb/libusb/usb_handler.cc +++ b/src/components/transport_manager/src/usb/libusb/usb_handler.cc @@ -1,4 +1,4 @@ -/* +/** * \file usb_handler.cc * \brief UsbHandler class source file. * @@ -39,9 +39,7 @@ #include "transport_manager/usb/common.h" #include "transport_manager/transport_adapter/transport_adapter_impl.h" -#include "utils/macro.h" #include "utils/logger.h" -#include "utils/threads/thread.h" namespace transport_manager { namespace transport_adapter { @@ -77,16 +75,14 @@ class UsbHandler::ControlTransferSequenceState { UsbHandler::UsbHandler() : shutdown_requested_(false), - thread_(NULL), + thread_(), usb_device_listeners_(), devices_(), transfer_sequences_(), device_handles_to_close_(), libusb_context_(NULL), arrived_callback_handle_(), - left_callback_handle_() { - thread_ = threads::CreateThread("UsbHandler", new UsbHandlerDelegate(this)); -} + left_callback_handle_() {} UsbHandler::~UsbHandler() { shutdown_requested_ = true; @@ -95,15 +91,12 @@ UsbHandler::~UsbHandler() { arrived_callback_handle_); libusb_hotplug_deregister_callback(libusb_context_, left_callback_handle_); } - thread_->stop(); + pthread_join(thread_, 0); LOG4CXX_INFO(logger_, "UsbHandler thread finished"); if (libusb_context_) { libusb_exit(libusb_context_); libusb_context_ = 0; } - thread_->join(); - delete thread_->delegate(); - threads::DeleteThread(thread_); } void UsbHandler::DeviceArrived(libusb_device* device_libusb) { @@ -216,6 +209,11 @@ void UsbHandler::CloseDeviceHandle(libusb_device_handle* device_handle) { device_handles_to_close_.push_back(device_handle); } +void* UsbHandlerThread(void* data) { + static_cast<UsbHandler*>(data)->Thread(); + return 0; +} + int ArrivedCallback(libusb_context* context, libusb_device* device, libusb_hotplug_event event, void* data) { LOG4CXX_TRACE(logger_, "enter. libusb device arrived (bus number " @@ -288,12 +286,19 @@ TransportAdapter::Error UsbHandler::Init() { return TransportAdapter::FAIL; } - if (!thread_->start()) { - LOG4CXX_ERROR(logger_, "USB device scanner thread start failed, error code"); + const int thread_start_error = + pthread_create(&thread_, 0, &UsbHandlerThread, this); + if (0 != thread_start_error) { + LOG4CXX_ERROR(logger_, "USB device scanner thread start failed, error code " + << thread_start_error); LOG4CXX_TRACE(logger_, - "exit with TransportAdapter::FAIL."); + "exit with TransportAdapter::FAIL. Condition: 0 !== thread_start_error"); return TransportAdapter::FAIL; } + LOG4CXX_INFO(logger_, "UsbHandler thread started"); + pthread_setname_np(thread_, "UsbHandler" ); + LOG4CXX_TRACE(logger_, + "exit with TransportAdapter::OK. Condition: 0 == thread_start_error"); return TransportAdapter::OK; } @@ -352,13 +357,13 @@ void UsbHandler::SubmitControlTransfer( assert(transfer->Type() == UsbControlTransfer::VENDOR); const libusb_request_type request_type = LIBUSB_REQUEST_TYPE_VENDOR; - libusb_endpoint_direction endpoint_direction = LIBUSB_ENDPOINT_IN; + libusb_endpoint_direction endpoint_direction; if (transfer->Direction() == UsbControlTransfer::IN) { endpoint_direction = LIBUSB_ENDPOINT_IN; } else if (transfer->Direction() == UsbControlTransfer::OUT) { endpoint_direction = LIBUSB_ENDPOINT_OUT; } else { - NOTREACHED(); + assert(0); } const uint8_t request = transfer->Request(); const uint16_t value = transfer->Value(); @@ -465,16 +470,5 @@ void UsbHandler::ControlTransferSequenceState::Finish() { finished_ = true; } -UsbHandler::UsbHandlerDelegate::UsbHandlerDelegate( - UsbHandler* handler) - : handler_(handler) { -} - -void UsbHandler::UsbHandlerDelegate::threadMain() { - LOG4CXX_AUTO_TRACE(logger_); - DCHECK(handler_); - handler_->Thread(); -} - -} // namespace transport_adapter -} // namespace transport_manager +} // namespace +} // namespace |