Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 59 additions & 7 deletions src/Comms/SerialLink.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,20 +27,20 @@ namespace {
SerialConfiguration::SerialConfiguration(const QString &name, QObject *parent)
: LinkConfiguration(name, parent)
{
// qCDebug(SerialLinkLog) << this;
qCDebug(SerialLinkLog) << this;
}

SerialConfiguration::SerialConfiguration(const SerialConfiguration *source, QObject *parent)
: LinkConfiguration(source, parent)
{
// qCDebug(SerialLinkLog) << this;
qCDebug(SerialLinkLog) << this;

SerialConfiguration::copyFrom(source);
}

SerialConfiguration::~SerialConfiguration()
{
// qCDebug(SerialLinkLog) << this;
qCDebug(SerialLinkLog) << this;
}

void SerialConfiguration::setPortName(const QString &name)
Expand Down Expand Up @@ -109,10 +109,62 @@ void SerialConfiguration::saveSettings(QSettings &settings, const QString &root)

QStringList SerialConfiguration::supportedBaudRates()
{
QStringList supportBaudRateStrings;

const QList<qint32> rates = QSerialPortInfo::standardBaudRates();
for (qint32 rate : rates) {
static const QSet<qint32> kDefaultSupportedBaudRates = {
#ifdef Q_OS_UNIX
50,
75,
#endif
110,
#ifdef Q_OS_UNIX
150,
200,
134,
#endif
300,
600,
1200,
#ifdef Q_OS_UNIX
1800,
#endif
2400,
4800,
9600,
#ifdef Q_OS_WIN
14400,
#endif
19200,
38400,
#ifdef Q_OS_WIN
56000,
#endif
57600,
115200,
#ifdef Q_OS_WIN
128000,
#endif
230400,
#ifdef Q_OS_WIN
256000,
#endif
460800,
500000,
#ifdef Q_OS_LINUX
576000,
#endif
921600,
};

const QList<qint32> activeSupportedBaudRates = QSerialPortInfo::standardBaudRates();

QSet<qint32> mergedBaudRateSet(kDefaultSupportedBaudRates.constBegin(), kDefaultSupportedBaudRates.constEnd());
(void) mergedBaudRateSet.unite(QSet<qint32>(activeSupportedBaudRates.constBegin(), activeSupportedBaudRates.constEnd()));

QList<qint32> mergedBaudRateList = mergedBaudRateSet.values();
std::sort(mergedBaudRateList.begin(), mergedBaudRateList.end());

QStringList supportBaudRateStrings{};
supportBaudRateStrings.reserve(mergedBaudRateList.size());
for (const qint32 rate : std::as_const(mergedBaudRateList)) {
supportBaudRateStrings.append(QString::number(rate));
}

Expand Down
Loading