Skip to content

Commit 6dd6438

Browse files
committed
qt: Implemented USB device configuration dialog
1 parent 5486068 commit 6dd6438

9 files changed

+196
-12
lines changed

qt/main_window.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include "main_window.h"
77
#include "ui_main_window.h"
8+
#include "settings_programmer_dialog.h"
89
#include "chip_db.h"
910
#include "logger.h"
1011
#include <QDebug>
@@ -78,6 +79,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
7879
SLOT(slotProgRead()));
7980
connect(ui->actionWrite, SIGNAL(triggered()), this,
8081
SLOT(slotProgWrite()));
82+
connect(ui->actionProgrammer, SIGNAL(triggered()), this,
83+
SLOT(slotSettingsProgrammer()));
8184
}
8285

8386
MainWindow::~MainWindow()
@@ -289,3 +292,13 @@ void MainWindow::slotSelectChip(int selectedChipNum)
289292

290293
prog->selectChip(selectedChipNum);
291294
}
295+
296+
void MainWindow::slotSettingsProgrammer()
297+
{
298+
SettingsProgrammerDialog progDialog(this);
299+
300+
progDialog.setUsbDevName(prog->getUsbDevName());
301+
302+
if (progDialog.exec() == QDialog::Accepted)
303+
prog->setUsbDevName(progDialog.getUsbDevName());
304+
}

qt/main_window.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public slots:
4949
void slotProgRead();
5050
void slotProgWrite();
5151
void slotSelectChip(int selectedChipNum);
52+
void slotSettingsProgrammer();
5253
};
5354

5455
#endif // MAIN_WINDOW_H

qt/main_window.ui

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@
200200
<x>0</x>
201201
<y>0</y>
202202
<width>570</width>
203-
<height>20</height>
203+
<height>19</height>
204204
</rect>
205205
</property>
206206
<widget class="QMenu" name="menuDevice">
@@ -225,9 +225,16 @@
225225
</property>
226226
<addaction name="actionConnect"/>
227227
</widget>
228+
<widget class="QMenu" name="menuSettings">
229+
<property name="title">
230+
<string>Settings</string>
231+
</property>
232+
<addaction name="actionProgrammer"/>
233+
</widget>
228234
<addaction name="menuFile"/>
229235
<addaction name="menuProgrammer"/>
230236
<addaction name="menuDevice"/>
237+
<addaction name="menuSettings"/>
231238
</widget>
232239
<widget class="QToolBar" name="mainToolBar">
233240
<attribute name="toolBarArea">
@@ -284,6 +291,11 @@
284291
<string>Erase</string>
285292
</property>
286293
</action>
294+
<action name="actionProgrammer">
295+
<property name="text">
296+
<string>Programmer</string>
297+
</property>
298+
</action>
287299
</widget>
288300
<layoutdefault spacing="6" margin="11"/>
289301
<resources/>

qt/programmer.cpp

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
#include "programmer.h"
77
#include <QDebug>
88

9-
#define CDC_DEV_NAME "/dev/ttyACM0"
10-
#define CDC_BUF_SIZE 64
9+
#define USB_DEV_NAME "/dev/ttyACM0"
1110

1211
#define SERIAL_PORT_SPEED 4000000
1312
#define READ_TIMEOUT_MS 100
@@ -16,6 +15,7 @@
1615

1716
Programmer::Programmer(QObject *parent) : QObject(parent)
1817
{
18+
usbDevName = USB_DEV_NAME;
1919
}
2020

2121
Programmer::~Programmer()
@@ -26,7 +26,7 @@ Programmer::~Programmer()
2626

2727
int Programmer::serialPortConnect()
2828
{
29-
serialPort.setPortName(CDC_DEV_NAME);
29+
serialPort.setPortName(usbDevName);
3030
serialPort.setBaudRate(SERIAL_PORT_SPEED);
3131

3232
if (!serialPort.open(QIODevice::ReadWrite))
@@ -65,6 +65,16 @@ bool Programmer::isConnected()
6565
return isConn;
6666
}
6767

68+
void Programmer::setUsbDevName(const QString &name)
69+
{
70+
usbDevName = name;
71+
}
72+
73+
QString Programmer::getUsbDevName()
74+
{
75+
return usbDevName;
76+
}
77+
6878
void Programmer::readChipIdCb(int ret)
6979
{
7080
emit readChipIdCompleted(ret);
@@ -84,7 +94,7 @@ void Programmer::readChipId(ChipId *chipId)
8494
serialPortDisconnect();
8595
writeData.clear();
8696
writeData.append((const char *)&cmd, sizeof(cmd));
87-
reader.init(CDC_DEV_NAME, SERIAL_PORT_SPEED, (uint8_t *)chipId,
97+
reader.init(usbDevName, SERIAL_PORT_SPEED, (uint8_t *)chipId,
8898
sizeof(ChipId), (uint8_t *)writeData.constData(), writeData.size());
8999
reader.start();
90100
}
@@ -109,7 +119,7 @@ void Programmer::eraseChip(uint32_t addr, uint32_t len)
109119
serialPortDisconnect();
110120
writeData.clear();
111121
writeData.append((const char *)&eraseCmd, sizeof(eraseCmd));
112-
reader.init(CDC_DEV_NAME, SERIAL_PORT_SPEED, NULL, 0,
122+
reader.init(usbDevName, SERIAL_PORT_SPEED, NULL, 0,
113123
(uint8_t *)writeData.constData(), writeData.size());
114124
reader.start();
115125
}
@@ -132,7 +142,7 @@ void Programmer::readChip(uint8_t *buf, uint32_t addr, uint32_t len)
132142
serialPortDisconnect();
133143
writeData.clear();
134144
writeData.append((const char *)&readCmd, sizeof(readCmd));
135-
reader.init(CDC_DEV_NAME, SERIAL_PORT_SPEED, buf, len,
145+
reader.init(usbDevName, SERIAL_PORT_SPEED, buf, len,
136146
(uint8_t *)writeData.constData(), writeData.size());
137147
reader.start();
138148
}
@@ -151,7 +161,7 @@ void Programmer::writeChip(uint8_t *buf, uint32_t addr, uint32_t len,
151161

152162
/* Serial port object cannot be used in other thread */
153163
serialPortDisconnect();
154-
writer.init(CDC_DEV_NAME, SERIAL_PORT_SPEED, buf, addr, len, pageSize);
164+
writer.init(usbDevName, SERIAL_PORT_SPEED, buf, addr, len, pageSize);
155165
writer.start();
156166
}
157167

@@ -175,7 +185,7 @@ void Programmer::selectChip(uint32_t chipNum)
175185
serialPortDisconnect();
176186
writeData.clear();
177187
writeData.append((const char *)&selectCmd, sizeof(SelectCmd));
178-
reader.init(CDC_DEV_NAME, SERIAL_PORT_SPEED, NULL, 0,
188+
reader.init(usbDevName, SERIAL_PORT_SPEED, NULL, 0,
179189
(uint8_t *)writeData.constData(), writeData.size());
180190
reader.start();
181191
}

qt/programmer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Programmer : public QObject
2121
Q_OBJECT
2222

2323
QSerialPort serialPort;
24+
QString usbDevName;
2425
Writer writer;
2526
Reader reader;
2627
bool isConn;
@@ -36,6 +37,8 @@ class Programmer : public QObject
3637
int connect();
3738
void disconnect();
3839
bool isConnected();
40+
void setUsbDevName(const QString &name);
41+
QString getUsbDevName();
3942
void readChipId(ChipId *chipId);
4043
void eraseChip(uint32_t addr, uint32_t len);
4144
void readChip(uint8_t *buf, uint32_t addr, uint32_t len);

qt/qt.pro

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ SOURCES += main.cpp\
2424
logger.cpp \
2525
buffer_table_model.cpp \
2626
writer.cpp \
27-
reader.cpp
27+
reader.cpp \
28+
settings_programmer_dialog.cpp
2829

2930
HEADERS += main_window.h \
3031
programmer.h \
@@ -33,8 +34,10 @@ HEADERS += main_window.h \
3334
buffer_table_model.h \
3435
cmd.h \
3536
writer.h \
36-
reader.h
37+
reader.h \
38+
settings_programmer_dialog.h
3739

38-
FORMS += main_window.ui
40+
FORMS += main_window.ui \
41+
settings_programmer_dialog.ui
3942

4043
QMAKE_CXXFLAGS += -std=c++11 -Wextra -Werror

qt/settings_programmer_dialog.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include "settings_programmer_dialog.h"
2+
#include "ui_settings_programmer_dialog.h"
3+
4+
SettingsProgrammerDialog::SettingsProgrammerDialog(QWidget *parent) :
5+
QDialog(parent),
6+
ui(new Ui::SettingsProgrammerDialog)
7+
{
8+
ui->setupUi(this);
9+
}
10+
11+
SettingsProgrammerDialog::~SettingsProgrammerDialog()
12+
{
13+
delete ui;
14+
}
15+
16+
void SettingsProgrammerDialog::setUsbDevName(const QString &name)
17+
{
18+
ui->usbDevNameLineEdit->setText(name);
19+
}
20+
21+
QString SettingsProgrammerDialog::getUsbDevName()
22+
{
23+
return ui->usbDevNameLineEdit->text();
24+
}

qt/settings_programmer_dialog.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef SETTINGS_PROGRAMMER_DIALOG_H
2+
#define SETTINGS_PROGRAMMER_DIALOG_H
3+
4+
#include <QDialog>
5+
6+
namespace Ui {
7+
class SettingsProgrammerDialog;
8+
}
9+
10+
class SettingsProgrammerDialog : public QDialog
11+
{
12+
Q_OBJECT
13+
14+
public:
15+
explicit SettingsProgrammerDialog(QWidget *parent = 0);
16+
~SettingsProgrammerDialog();
17+
void setUsbDevName(const QString &name);
18+
QString getUsbDevName();
19+
20+
private:
21+
Ui::SettingsProgrammerDialog *ui;
22+
};
23+
24+
#endif // SETTINGS_PROGRAMMER_DIALOG_H

qt/settings_programmer_dialog.ui

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>SettingsProgrammerDialog</class>
4+
<widget class="QDialog" name="SettingsProgrammerDialog">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>400</width>
10+
<height>177</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Programmer Settings</string>
15+
</property>
16+
<widget class="QDialogButtonBox" name="buttonBox">
17+
<property name="geometry">
18+
<rect>
19+
<x>40</x>
20+
<y>120</y>
21+
<width>341</width>
22+
<height>32</height>
23+
</rect>
24+
</property>
25+
<property name="orientation">
26+
<enum>Qt::Horizontal</enum>
27+
</property>
28+
<property name="standardButtons">
29+
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
30+
</property>
31+
</widget>
32+
<widget class="QWidget" name="">
33+
<property name="geometry">
34+
<rect>
35+
<x>10</x>
36+
<y>30</y>
37+
<width>201</width>
38+
<height>24</height>
39+
</rect>
40+
</property>
41+
<layout class="QHBoxLayout" name="horizontalLayout">
42+
<item>
43+
<widget class="QLabel" name="usbDevNameLabel">
44+
<property name="text">
45+
<string>USB device name</string>
46+
</property>
47+
</widget>
48+
</item>
49+
<item>
50+
<widget class="QLineEdit" name="usbDevNameLineEdit"/>
51+
</item>
52+
</layout>
53+
</widget>
54+
<zorder>buttonBox</zorder>
55+
<zorder>usbDevNameLabel</zorder>
56+
<zorder>usbDevNameLineEdit</zorder>
57+
<zorder>usbDevNameLabel</zorder>
58+
</widget>
59+
<resources/>
60+
<connections>
61+
<connection>
62+
<sender>buttonBox</sender>
63+
<signal>accepted()</signal>
64+
<receiver>SettingsProgrammerDialog</receiver>
65+
<slot>accept()</slot>
66+
<hints>
67+
<hint type="sourcelabel">
68+
<x>248</x>
69+
<y>254</y>
70+
</hint>
71+
<hint type="destinationlabel">
72+
<x>157</x>
73+
<y>274</y>
74+
</hint>
75+
</hints>
76+
</connection>
77+
<connection>
78+
<sender>buttonBox</sender>
79+
<signal>rejected()</signal>
80+
<receiver>SettingsProgrammerDialog</receiver>
81+
<slot>reject()</slot>
82+
<hints>
83+
<hint type="sourcelabel">
84+
<x>316</x>
85+
<y>260</y>
86+
</hint>
87+
<hint type="destinationlabel">
88+
<x>286</x>
89+
<y>274</y>
90+
</hint>
91+
</hints>
92+
</connection>
93+
</connections>
94+
</ui>

0 commit comments

Comments
 (0)