Skip to content

Commit 0aeda9c

Browse files
committed
qt: use signal-slot for write instead of callback
1 parent 860ee6e commit 0aeda9c

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

qt/main_window.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
6161
initBufTable();
6262

6363
prog = new Programmer(this);
64+
connect(prog, SIGNAL(writeChipCompleted(int)), this,
65+
SLOT(slotProgWriteCompleted(int)));
6466

6567
addChipDB(ui->chipSelectComboBox);
6668
connect(ui->chipSelectComboBox, SIGNAL(currentIndexChanged(int)),
@@ -216,7 +218,7 @@ void MainWindow::slotProgRead()
216218
std::placeholders::_1), buffer, START_ADDRESS, readSize);
217219
}
218220

219-
void MainWindow::writeChipCb(int status)
221+
void MainWindow::slotProgWriteCompleted(int status)
220222
{
221223
if (!status)
222224
qInfo() << "Data has been successfully written";
@@ -244,8 +246,7 @@ void MainWindow::slotProgWrite()
244246
return;
245247
}
246248

247-
prog->writeChip(std::bind(&MainWindow::writeChipCb, this,
248-
std::placeholders::_1), buffer, START_ADDRESS, bufferSize, pageSize);
249+
prog->writeChip(buffer, START_ADDRESS, bufferSize, pageSize);
249250
}
250251

251252
void MainWindow::selectChipCb()

qt/main_window.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ class MainWindow : public QMainWindow
3939
void readChipCb(int status);
4040
void writeChipCb(int status);
4141

42+
private slots:
43+
void slotProgWriteCompleted(int status);
44+
4245
public slots:
4346
void slotFileOpen();
4447
void slotProgConnect();

qt/programmer.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -323,13 +323,12 @@ void Programmer::writeCb(int ret)
323323
{
324324
QObject::disconnect(&writer, SIGNAL(result(int)), this, SLOT(writeCb(int)));
325325
serialPortConnect();
326-
writeChipCb(ret);
326+
emit writeChipCompleted(ret);
327327
}
328328

329-
void Programmer::writeChip(std::function<void(int)> callback, uint8_t *buf,
330-
uint32_t addr, uint32_t len, uint32_t pageSize)
329+
void Programmer::writeChip(uint8_t *buf, uint32_t addr, uint32_t len,
330+
uint32_t pageSize)
331331
{
332-
writeChipCb = callback;
333332
QObject::connect(&writer, SIGNAL(result(int)), this, SLOT(writeCb(int)));
334333

335334
/* Serial port object cannot be used in other thread */

qt/programmer.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ class Programmer : public QObject
3131
std::function<void(void)> selectChipCb;
3232
std::function<void(void)> eraseChipCb;
3333
std::function<void(int)> readChipCb;
34-
std::function<void(int)> writeChipCb;
3534
uint8_t *readChipBuf;
3635
uint32_t readChipLen;
3736
uint8_t *writeChipBuf;
@@ -73,10 +72,13 @@ class Programmer : public QObject
7372
uint32_t len);
7473
void readChip(std::function<void(int)> callback, uint8_t *buf,
7574
uint32_t addr, uint32_t len);
76-
void writeChip(std::function<void(int)> callback, uint8_t *buf,
77-
uint32_t addr, uint32_t len, uint32_t pageSize);
75+
void writeChip(uint8_t *buf, uint32_t addr, uint32_t len,
76+
uint32_t pageSize);
7877
void selectChip(std::function<void(void)> callback, uint32_t chipNum);
7978

79+
signals:
80+
void writeChipCompleted(int ret);
81+
8082
private slots:
8183
void writeCb(int ret);
8284
};

0 commit comments

Comments
 (0)