From 675e6cfcf6c05de35cb8a30f4c0f23eb596e293e Mon Sep 17 00:00:00 2001 From: "michal.szwaj" Date: Fri, 6 Apr 2018 20:33:27 +0200 Subject: [PATCH] Cleanup entity creation --- include/f1x/openauto/autoapp/App.hpp | 1 - src/autoapp/App.cpp | 77 ++++++++++++++-------------- 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/include/f1x/openauto/autoapp/App.hpp b/include/f1x/openauto/autoapp/App.hpp index 5bbdbe2..81c3f39 100644 --- a/include/f1x/openauto/autoapp/App.hpp +++ b/include/f1x/openauto/autoapp/App.hpp @@ -48,7 +48,6 @@ public: private: using std::enable_shared_from_this::shared_from_this; - void enumerateDevices(); void waitForDevice(); void aoapDeviceHandler(aasdk::usb::DeviceHandle deviceHandle); diff --git a/src/autoapp/App.cpp b/src/autoapp/App.cpp index 26274c7..a58aad3 100644 --- a/src/autoapp/App.cpp +++ b/src/autoapp/App.cpp @@ -54,29 +54,28 @@ void App::waitForUSBDevice() void App::start(aasdk::tcp::ITCPEndpoint::SocketPointer socket) { strand_.dispatch([this, self = this->shared_from_this(), socket = std::move(socket)]() mutable { - if(androidAutoEntity_ == nullptr) - { - try - { - usbHub_->cancel(); - connectedAccessoriesEnumerator_->cancel(); - - auto tcpEndpoint(std::make_shared(tcpWrapper_, std::move(socket))); - androidAutoEntity_ = androidAutoEntityFactory_.create(std::move(tcpEndpoint)); - androidAutoEntity_->start(*this); - } - catch(const aasdk::error::Error& error) - { - OPENAUTO_LOG(error) << "[App] TCP AndroidAutoEntity create error: " << error.what(); - - androidAutoEntity_.reset(); - this->waitForDevice(); - } - } - else + if(androidAutoEntity_ != nullptr) { tcpWrapper_.close(*socket); OPENAUTO_LOG(warning) << "[App] android auto entity is still running."; + return; + } + + try + { + usbHub_->cancel(); + connectedAccessoriesEnumerator_->cancel(); + + auto tcpEndpoint(std::make_shared(tcpWrapper_, std::move(socket))); + androidAutoEntity_ = androidAutoEntityFactory_.create(std::move(tcpEndpoint)); + androidAutoEntity_->start(*this); + } + catch(const aasdk::error::Error& error) + { + OPENAUTO_LOG(error) << "[App] TCP AndroidAutoEntity create error: " << error.what(); + + androidAutoEntity_.reset(); + this->waitForDevice(); } }); } @@ -91,6 +90,7 @@ void App::stop() if(androidAutoEntity_ != nullptr) { androidAutoEntity_->stop(); + androidAutoEntity_.reset(); } }); } @@ -99,27 +99,26 @@ void App::aoapDeviceHandler(aasdk::usb::DeviceHandle deviceHandle) { OPENAUTO_LOG(info) << "[App] Device connected."; - if(androidAutoEntity_ == nullptr) - { - try - { - connectedAccessoriesEnumerator_->cancel(); - - auto aoapDevice(aasdk::usb::AOAPDevice::create(usbWrapper_, ioService_, deviceHandle)); - androidAutoEntity_ = androidAutoEntityFactory_.create(std::move(aoapDevice)); - androidAutoEntity_->start(*this); - } - catch(const aasdk::error::Error& error) - { - OPENAUTO_LOG(error) << "[App] USB AndroidAutoEntity create error: " << error.what(); - - androidAutoEntity_.reset(); - this->waitForDevice(); - } - } - else + if(androidAutoEntity_ != nullptr) { OPENAUTO_LOG(warning) << "[App] android auto entity is still running."; + return; + } + + try + { + connectedAccessoriesEnumerator_->cancel(); + + auto aoapDevice(aasdk::usb::AOAPDevice::create(usbWrapper_, ioService_, deviceHandle)); + androidAutoEntity_ = androidAutoEntityFactory_.create(std::move(aoapDevice)); + androidAutoEntity_->start(*this); + } + catch(const aasdk::error::Error& error) + { + OPENAUTO_LOG(error) << "[App] USB AndroidAutoEntity create error: " << error.what(); + + androidAutoEntity_.reset(); + this->waitForDevice(); } }