BareMetal: Improve Segger J-Link settings page

* Fixed handling of items data, which are should not be translatable.
 * Improved translatable item text descriptions.
 * Added a new interface type "cJTAG" for the target adapter.
 * Expanded the list of target adapter speeds.

Change-Id: Ib22908dedb089e4ba0eb75a3622beb88912d7c3d
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Denis Shienkov
2021-02-01 15:24:03 +03:00
parent c16f8ce988
commit 55945c3307
2 changed files with 117 additions and 78 deletions

View File

@@ -99,19 +99,19 @@ CommandLine JLinkGdbServerProvider::command() const
cmd.addArgs("-port " + QString::number(channel().port()), CommandLine::Raw);
if (m_jlinkHost == "USB") {
cmd.addArgs("-select usb ", CommandLine::Raw);
} else
if (m_jlinkHost == "IP") {
cmd.addArgs("-select ip=" + m_jlinkHostAddr + " ", CommandLine::Raw);
}
cmd.addArgs("-select usb", CommandLine::Raw);
} else if (m_jlinkHost == "IP") {
cmd.addArgs("-select ip=" + m_jlinkHostAddr, CommandLine::Raw);
}
if (m_jlinkTargetIface != "Default") {
cmd.addArgs("-if " + m_jlinkTargetIface +
" -speed " + m_jlinkTargetIfaceSpeed + " ", CommandLine::Raw);
if (!m_jlinkTargetIface.isEmpty()) {
cmd.addArgs("-if " + m_jlinkTargetIface, CommandLine::Raw);
if (!m_jlinkTargetIfaceSpeed.isEmpty())
cmd.addArgs("-speed " + m_jlinkTargetIfaceSpeed, CommandLine::Raw);
}
if (!m_jlinkDevice.isEmpty())
cmd.addArgs("-device " + m_jlinkDevice + " ", CommandLine::Raw);
cmd.addArgs("-device " + m_jlinkDevice, CommandLine::Raw);
if (!m_additionalArguments.isEmpty())
cmd.addArgs(m_additionalArguments, CommandLine::Raw);
@@ -210,17 +210,12 @@ JLinkGdbServerProviderConfigWidget::JLinkGdbServerProviderConfigWidget(
}
m_mainLayout->addRow(tr("Executable file:"), m_executableFileChooser);
//Host interface settings
// Host interface settings.
m_hostInterfaceWidget = new QWidget(this);
m_hostInterfaceComboBox = new QComboBox(m_hostInterfaceWidget);
m_hostInterfaceComboBox->insertItem(HostInterfaceDefault, tr("Default"));
m_hostInterfaceComboBox->insertItem(HostInterfaceUSB, "USB");
m_hostInterfaceComboBox->insertItem(HostInterfaceIP, "IP");
m_hostInterfaceAddressLabel = new QLabel(m_hostInterfaceWidget);
m_hostInterfaceAddressLabel->setText(tr("IP Address"));
m_hostInterfaceAddressLineEdit = new QLineEdit(m_hostInterfaceWidget);
const auto hostInterfaceLayout = new QHBoxLayout(m_hostInterfaceWidget);
hostInterfaceLayout->setContentsMargins(0, 0, 0, 0);
hostInterfaceLayout->addWidget(m_hostInterfaceComboBox);
@@ -228,33 +223,18 @@ JLinkGdbServerProviderConfigWidget::JLinkGdbServerProviderConfigWidget(
hostInterfaceLayout->addWidget(m_hostInterfaceAddressLineEdit);
m_mainLayout->addRow(tr("Host interface:"), m_hostInterfaceWidget);
//Target interface settings
// Target interface settings.
m_targetInterfaceWidget = new QWidget(this);
m_targetInterfaceComboBox = new QComboBox(m_targetInterfaceWidget);
m_targetInterfaceComboBox->insertItem(TargetInterfaceDefault, tr("Default"));
m_targetInterfaceComboBox->insertItem(TargetInterfaceJTAG, "JTAG");
m_targetInterfaceComboBox->insertItem(TargetInterfaceSWD, "SWD");
m_targetInterfaceComboBox->insertItem(TargetInterfaceFINE, "FINE");
m_targetInterfaceComboBox->insertItem(TargetInterface2Wire, "2-wire-JTAG-PIC32");
m_targetInterfaceSpeedLabel = new QLabel(m_targetInterfaceWidget);
m_targetInterfaceSpeedLabel->setText(tr("Speed"));
m_targetInterfaceSpeedComboBox = new QComboBox(m_targetInterfaceWidget);
m_targetInterfaceSpeedComboBox->insertItems(0, m_targetSpeedList);
m_targetInterfaceSpeedUnitsLabel = new QLabel(m_targetInterfaceWidget);
m_targetInterfaceSpeedUnitsLabel->setText(tr("kHz"));
const auto targetInterfaceLayout = new QHBoxLayout(m_targetInterfaceWidget);
targetInterfaceLayout->setContentsMargins(0, 0, 0, 0);
targetInterfaceLayout->addWidget(m_targetInterfaceComboBox);
targetInterfaceLayout->addWidget(m_targetInterfaceSpeedLabel);
targetInterfaceLayout->addWidget(m_targetInterfaceSpeedComboBox);
targetInterfaceLayout->addWidget(m_targetInterfaceSpeedUnitsLabel);
m_mainLayout->addRow(tr("Target interface:"), m_targetInterfaceWidget);
//
m_jlinkDeviceLineEdit = new QLineEdit(this);
m_mainLayout->addRow(tr("Device:"), m_jlinkDeviceLineEdit);
@@ -269,6 +249,9 @@ JLinkGdbServerProviderConfigWidget::JLinkGdbServerProviderConfigWidget(
m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip());
m_mainLayout->addRow(tr("Reset commands:"), m_resetCommandsTextEdit);
populateHostInterfaces();
populateTargetInterfaces();
populateTargetSpeeds();
addErrorLabel();
setFromProvider();
@@ -298,9 +281,11 @@ JLinkGdbServerProviderConfigWidget::JLinkGdbServerProviderConfigWidget(
this, &GdbServerProviderConfigWidget::dirty);
connect(m_hostInterfaceComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &JLinkGdbServerProviderConfigWidget::hostInterfaceChanged);
this, &JLinkGdbServerProviderConfigWidget::updateAllowedControls);
connect(m_targetInterfaceComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &JLinkGdbServerProviderConfigWidget::targetInterfaceChanged);
this, &JLinkGdbServerProviderConfigWidget::updateAllowedControls);
connect(m_targetInterfaceSpeedComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &JLinkGdbServerProviderConfigWidget::updateAllowedControls);
}
void JLinkGdbServerProviderConfigWidget::apply()
@@ -311,10 +296,10 @@ void JLinkGdbServerProviderConfigWidget::apply()
p->setChannel(m_hostWidget->channel());
p->m_executableFile = m_executableFileChooser->filePath();
p->m_jlinkDevice = m_jlinkDeviceLineEdit->text();
p->m_jlinkHost = m_hostInterfaceComboBox->currentText();
p->m_jlinkHost = m_hostInterfaceComboBox->currentData().toString();
p->m_jlinkHostAddr = m_hostInterfaceAddressLineEdit->text();
p->m_jlinkTargetIface = m_targetInterfaceComboBox->currentText();
p->m_jlinkTargetIfaceSpeed = m_targetInterfaceSpeedComboBox->currentText();
p->m_jlinkTargetIface = m_targetInterfaceComboBox->currentData().toString();
p->m_jlinkTargetIfaceSpeed = m_targetInterfaceSpeedComboBox->currentData().toString();
p->m_additionalArguments = m_additionalArgumentsTextEdit->toPlainText();
p->setInitCommands(m_initCommandsTextEdit->toPlainText());
p->setResetCommands(m_resetCommandsTextEdit->toPlainText());
@@ -327,23 +312,86 @@ void JLinkGdbServerProviderConfigWidget::discard()
GdbServerProviderConfigWidget::discard();
}
void JLinkGdbServerProviderConfigWidget::hostInterfaceChanged()
void JLinkGdbServerProviderConfigWidget::populateHostInterfaces()
{
const HostInterface selectedInterface = static_cast<HostInterface>(
m_hostInterfaceComboBox->currentIndex());
const bool isHostIfaceIP = selectedInterface == HostInterfaceIP;
m_hostInterfaceAddressLabel->setVisible(isHostIfaceIP);
m_hostInterfaceAddressLineEdit->setVisible(isHostIfaceIP);
m_hostInterfaceComboBox->addItem(tr("Default"));
m_hostInterfaceComboBox->addItem(tr("USB"), "USB");
m_hostInterfaceComboBox->addItem(tr("TCP/IP"), "IP");
}
void JLinkGdbServerProviderConfigWidget::targetInterfaceChanged()
void JLinkGdbServerProviderConfigWidget::populateTargetInterfaces()
{
const TargetInterface selectedInterface = static_cast<TargetInterface>(
m_targetInterfaceComboBox->currentIndex());
const bool isDefault = selectedInterface == TargetInterfaceDefault;
m_targetInterfaceSpeedLabel->setVisible(!isDefault);
m_targetInterfaceSpeedComboBox->setVisible(!isDefault);
m_targetInterfaceSpeedUnitsLabel->setVisible(!isDefault);
m_targetInterfaceComboBox->addItem(tr("Default"));
m_targetInterfaceComboBox->addItem(tr("JTAG"), "JTAG");
m_targetInterfaceComboBox->addItem(tr("Compact JTAG"), "cJTAG");
m_targetInterfaceComboBox->addItem(tr("SWD"), "SWD");
m_targetInterfaceComboBox->addItem(tr("Renesas RX FINE"), "FINE");
m_targetInterfaceComboBox->addItem(tr("ICSP"), "ICSP");
}
void JLinkGdbServerProviderConfigWidget::populateTargetSpeeds()
{
m_targetInterfaceSpeedComboBox->addItem(tr("Default"));
m_targetInterfaceSpeedComboBox->addItem(tr("Auto"), "auto");
m_targetInterfaceSpeedComboBox->addItem(tr("Adaptive"), "adaptive");
const QStringList fixedSpeeds = {"1", "5", "10", "20", "30", "50", "100", "200", "300",
"400", "500", "600", "750", "800", "900", "1000", "1334",
"1600", "2000", "2667" ,"3200", "4000", "4800", "5334",
"6000", "8000", "9600", "12000", "15000", "20000", "25000",
"30000", "40000", "50000"};
for (const auto &fixedSpeed : fixedSpeeds)
m_targetInterfaceSpeedComboBox->addItem(tr("%1 kHz").arg(fixedSpeed), fixedSpeed);
}
void JLinkGdbServerProviderConfigWidget::setHostInterface(const QString &newIface)
{
for (int index = 0; index < m_hostInterfaceComboBox->count(); ++index) {
const auto iface = m_hostInterfaceComboBox->itemData(index).toString();
if (iface == newIface) {
m_hostInterfaceComboBox->setCurrentIndex(index);
return;
}
}
// Falling back to the first default entry.
m_hostInterfaceComboBox->setCurrentIndex(0);
}
void JLinkGdbServerProviderConfigWidget::setTargetInterface(const QString &newIface)
{
for (int index = 0; index < m_targetInterfaceComboBox->count(); ++index) {
const auto iface = m_targetInterfaceComboBox->itemData(index).toString();
if (iface == newIface) {
m_targetInterfaceComboBox->setCurrentIndex(index);
return;
}
}
// Falling back to the first default entry.
m_targetInterfaceComboBox->setCurrentIndex(0);
}
void JLinkGdbServerProviderConfigWidget::setTargetSpeed(const QString &newSpeed)
{
for (int index = 0; index < m_targetInterfaceSpeedComboBox->count(); ++index) {
const auto speed = m_targetInterfaceSpeedComboBox->itemData(index).toString();
if (speed == newSpeed) {
m_targetInterfaceSpeedComboBox->setCurrentIndex(index);
return;
}
}
// Falling back to the first default entry.
m_targetInterfaceSpeedComboBox->setCurrentIndex(0);
}
void JLinkGdbServerProviderConfigWidget::updateAllowedControls()
{
const bool isHostIfaceIPSelected = (m_hostInterfaceComboBox->currentData().toString() == "IP");
m_hostInterfaceAddressLabel->setVisible(isHostIfaceIPSelected);
m_hostInterfaceAddressLineEdit->setVisible(isHostIfaceIPSelected);
const bool isTargetIfaceDefaultSelected = !m_targetInterfaceComboBox->currentData().isValid();
m_targetInterfaceSpeedLabel->setVisible(!isTargetIfaceDefaultSelected);
m_targetInterfaceSpeedComboBox->setVisible(!isTargetIfaceDefaultSelected);
}
void JLinkGdbServerProviderConfigWidget::setFromProvider()
@@ -352,19 +400,20 @@ void JLinkGdbServerProviderConfigWidget::setFromProvider()
Q_ASSERT(p);
const QSignalBlocker blocker(this);
m_hostWidget->setChannel(p->channel());
m_executableFileChooser->setFilePath(p->m_executableFile);
m_jlinkDeviceLineEdit->setText(p->m_jlinkDevice);
m_additionalArgumentsTextEdit->setPlainText(p->m_additionalArguments);
m_jlinkDeviceLineEdit->setText( p->m_jlinkDevice);
m_hostInterfaceComboBox->setCurrentText(p->m_jlinkHost);
m_executableFileChooser->setFilePath(p->m_executableFile);
m_hostInterfaceAddressLineEdit->setText(p->m_jlinkHostAddr);
m_targetInterfaceComboBox->setCurrentText(p->m_jlinkTargetIface);
m_targetInterfaceSpeedComboBox->setCurrentText(p->m_jlinkTargetIfaceSpeed);
m_hostWidget->setChannel(p->channel());
m_initCommandsTextEdit->setPlainText(p->initCommands());
m_jlinkDeviceLineEdit->setText( p->m_jlinkDevice);
m_jlinkDeviceLineEdit->setText(p->m_jlinkDevice);
m_resetCommandsTextEdit->setPlainText(p->resetCommands());
hostInterfaceChanged();
targetInterfaceChanged();
setHostInterface(p->m_jlinkHost);
setTargetInterface(p->m_jlinkTargetIface);
setTargetSpeed(p->m_jlinkTargetIfaceSpeed);
updateAllowedControls();
}
} // namespace Internal

View File

@@ -91,25 +91,19 @@ public:
JLinkGdbServerProvider *provider);
private:
enum HostInterface {
HostInterfaceDefault = 0,
HostInterfaceUSB,
HostInterfaceIP
};
enum TargetInterface {
TargetInterfaceDefault = 0,
TargetInterfaceJTAG,
TargetInterfaceSWD,
TargetInterfaceFINE,
TargetInterface2Wire
};
void apply() final;
void discard() final;
void hostInterfaceChanged();
void targetInterfaceChanged();
void populateHostInterfaces();
void populateTargetInterfaces();
void populateTargetSpeeds();
void setHostInterface(const QString &newIface);
void setTargetInterface(const QString &newIface);
void setTargetSpeed(const QString &newSpeed);
void updateAllowedControls();
void setFromProvider();
HostWidget *m_hostWidget = nullptr;
@@ -123,11 +117,7 @@ private:
QWidget *m_targetInterfaceWidget = nullptr;
QComboBox *m_targetInterfaceComboBox = nullptr;
QLabel *m_targetInterfaceSpeedLabel = nullptr;
QStringList m_targetSpeedList = {"5","10","20","30","50","100","200","300","400",
"500","600","750","800","900","1000","1334","1600","2000",
"2667","3200","4000","4800","5334","6000","8000","9600","12000"};
QComboBox *m_targetInterfaceSpeedComboBox = nullptr;
QLabel *m_targetInterfaceSpeedUnitsLabel = nullptr;
QLineEdit *m_jlinkDeviceLineEdit = nullptr;
QPlainTextEdit *m_additionalArgumentsTextEdit = nullptr;