From 79c4ba60f6429a2f6b004feaa8a1f2a4d58b673e Mon Sep 17 00:00:00 2001 From: edouard Date: Sun, 9 Jan 2011 09:53:56 +0000 Subject: [PATCH] Explicitely close the serial port upon DFU object deletion. git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2351 ebee16cc-31ac-478f-84a7-5cbb03baadba --- ground/src/plugins/uploader/SSP/port.cpp | 5 +++++ ground/src/plugins/uploader/SSP/port.h | 1 + ground/src/plugins/uploader/op_dfu.cpp | 4 +++- ground/src/plugins/uploader/uploadergadgetwidget.cpp | 3 +-- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ground/src/plugins/uploader/SSP/port.cpp b/ground/src/plugins/uploader/SSP/port.cpp index 2bb529c96..6ca8895b2 100644 --- a/ground/src/plugins/uploader/SSP/port.cpp +++ b/ground/src/plugins/uploader/SSP/port.cpp @@ -12,6 +12,11 @@ port::port(PortSettings settings,QString name):mstatus(port::closed) else mstatus=port::error; } + +port::~port() { + sport->close(); +} + port::portstatus port::status() { return mstatus; diff --git a/ground/src/plugins/uploader/SSP/port.h b/ground/src/plugins/uploader/SSP/port.h index 68bd559b0..1f8060e52 100644 --- a/ground/src/plugins/uploader/SSP/port.h +++ b/ground/src/plugins/uploader/SSP/port.h @@ -38,6 +38,7 @@ public: uint32_t TxError; uint16_t flags; port(PortSettings settings,QString name); + ~port(); portstatus status(); private: portstatus mstatus; diff --git a/ground/src/plugins/uploader/op_dfu.cpp b/ground/src/plugins/uploader/op_dfu.cpp index fd3f6638f..896c06fb5 100644 --- a/ground/src/plugins/uploader/op_dfu.cpp +++ b/ground/src/plugins/uploader/op_dfu.cpp @@ -98,8 +98,10 @@ DFUObject::DFUObject(bool _debug,bool _use_serial,QString portname): debug(_debu DFUObject::~DFUObject() { if (use_serial) { - if (mready) + if (mready) { delete serialhandle; + delete info; + } } else { hidHandle.close(0); } diff --git a/ground/src/plugins/uploader/uploadergadgetwidget.cpp b/ground/src/plugins/uploader/uploadergadgetwidget.cpp index 463f5259a..a27897489 100755 --- a/ground/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/src/plugins/uploader/uploadergadgetwidget.cpp @@ -207,7 +207,6 @@ void UploaderGadgetWidget::goToBootloader(UAVObject* callerObj, bool success) else m_config->telemetryLink->setCurrentIndex(m_config->telemetryLink->findText(dli)); - ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); disconnect(fwIAP, SIGNAL(transactionCompleted(UAVObject*,bool)),this,SLOT(goToBootloader(UAVObject*, bool))); currentStep = IAP_STATE_BOOTLOADER; @@ -336,7 +335,7 @@ void UploaderGadgetWidget::systemBoot() } currentStep = IAP_STATE_READY; log("You can now reconnect telemetry..."); - delete dfu; + delete dfu; // Frees up the USB/Serial port too dfu = NULL; }