Cleanup entity creation

This commit is contained in:
michal.szwaj 2018-04-06 20:33:27 +02:00 committed by Huan Truong
parent cc062f57e1
commit 84de27cc02
2 changed files with 38 additions and 40 deletions

View File

@ -48,7 +48,6 @@ public:
private:
using std::enable_shared_from_this<App>::shared_from_this;
void enumerateDevices();
void waitForDevice();
void aoapDeviceHandler(aasdk::usb::DeviceHandle deviceHandle);

View File

@ -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<aasdk::tcp::TCPEndpoint>(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<aasdk::tcp::TCPEndpoint>(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();
}
});
}
@ -103,27 +103,26 @@ void App::aoapDeviceHandler(aasdk::usb::DeviceHandle deviceHandle)
OPENAUTO_LOG(info) << "[CS] Ran USB Plug script.";
#endif
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();
}
}