55
66#include " programmer.h"
77#include < QDebug>
8+ #include < QTimer>
89
910#ifdef Q_OS_LINUX
1011 #define USB_DEV_NAME " /dev/ttyACM0"
@@ -52,6 +53,7 @@ void Programmer::serialPortDisconnect()
5253
5354void Programmer::connectCb (int ret)
5455{
56+ QTimer::singleShot (0 , &reader, &Reader::stop);
5557 QObject::disconnect (&reader, SIGNAL (result (int )), this ,
5658 SLOT (connectCb (int )));
5759
@@ -134,9 +136,10 @@ void Programmer::setIncSpare(bool isIncSpare)
134136
135137void Programmer::readChipIdCb (int ret)
136138{
137- emit readChipIdCompleted (ret );
139+ QTimer::singleShot ( 0 , &reader, &Reader::stop );
138140 QObject::disconnect (&reader, SIGNAL (result (int )), this ,
139141 SLOT (readChipIdCb (int )));
142+ emit readChipIdCompleted (ret);
140143}
141144
142145void Programmer::readChipId (ChipId *chipId)
@@ -159,6 +162,7 @@ void Programmer::readChipId(ChipId *chipId)
159162
160163void Programmer::eraseChipCb (int ret)
161164{
165+ QTimer::singleShot (0 , &reader, &Reader::stop);
162166 QObject::disconnect (&reader, SIGNAL (progress (unsigned int )), this ,
163167 SLOT (eraseProgressChipCb (unsigned int )));
164168 QObject::disconnect (&reader, SIGNAL (result (int )), this ,
@@ -197,6 +201,7 @@ void Programmer::eraseChip(uint32_t addr, uint32_t len)
197201
198202void Programmer::readCb (int ret)
199203{
204+ QTimer::singleShot (0 , &reader, &Reader::stop);
200205 QObject::disconnect (&reader, SIGNAL (progress (unsigned int )), this ,
201206 SLOT (readProgressCb (unsigned int )));
202207 QObject::disconnect (&reader, SIGNAL (result (int )), this , SLOT (readCb (int )));
@@ -234,6 +239,7 @@ void Programmer::readChip(uint8_t *buf, uint32_t addr, uint32_t len,
234239
235240void Programmer::writeCb (int ret)
236241{
242+ QTimer::singleShot (0 , &writer, &Writer::stop);
237243 QObject::disconnect (&writer, SIGNAL (progress (unsigned int )), this ,
238244 SLOT (writeProgressCb (unsigned int )));
239245 QObject::disconnect (&writer, SIGNAL (result (int )), this , SLOT (writeCb (int )));
@@ -259,6 +265,7 @@ void Programmer::writeChip(uint8_t *buf, uint32_t addr, uint32_t len,
259265
260266void Programmer::readChipBadBlocksCb (int ret)
261267{
268+ QTimer::singleShot (0 , &reader, &Reader::stop);
262269 QObject::disconnect (&reader, SIGNAL (result (int )), this ,
263270 SLOT (readChipBadBlocksCb (int )));
264271 emit readChipBadBlocksCompleted (ret);
@@ -283,6 +290,7 @@ void Programmer::readChipBadBlocks()
283290
284291void Programmer::confChipCb (int ret)
285292{
293+ QTimer::singleShot (0 , &reader, &Reader::stop);
286294 QObject::disconnect (&reader, SIGNAL (result (int )), this ,
287295 SLOT (confChipCb (int )));
288296 emit confChipCompleted (ret);
@@ -412,6 +420,7 @@ void Programmer::firmwareUpdateProgressCb(unsigned int progress)
412420
413421void Programmer::firmwareUpdateCb (int ret)
414422{
423+ QTimer::singleShot (0 , &writer, &Writer::stop);
415424 QObject::disconnect (&writer, SIGNAL (progress (unsigned int )), this ,
416425 SLOT (firmwareUpdateProgressCb (unsigned int )));
417426 QObject::disconnect (&writer, SIGNAL (result (int )), this ,
@@ -445,6 +454,7 @@ void Programmer::firmwareUpdateStart()
445454
446455void Programmer::getActiveImageCb (int ret)
447456{
457+ QTimer::singleShot (0 , &reader, &Reader::stop);
448458 QObject::disconnect (&reader, SIGNAL (result (int )), this ,
449459 SLOT (getActiveImageCb (int )));
450460
0 commit comments