diff --git a/src/ui/SerialConfigurationWindow.cc b/src/ui/SerialConfigurationWindow.cc index 0d086f5d0e82e8c4d44299198485cbe525fd20b7..2b9f95020bcb3d67acef5e6e036aefbc091c8cd3 100644 --- a/src/ui/SerialConfigurationWindow.cc +++ b/src/ui/SerialConfigurationWindow.cc @@ -59,39 +59,55 @@ SerialConfigurationWindow::SerialConfigurationWindow(LinkInterface* link, QWidge // Set up baud rates ui.baudRate->clear(); - ui.baudRate->addItem("50", 50); - ui.baudRate->addItem("70", 70); - ui.baudRate->addItem("110", 110); - ui.baudRate->addItem("134", 134); - ui.baudRate->addItem("150", 150); - ui.baudRate->addItem("200", 200); - ui.baudRate->addItem("300", 300); - ui.baudRate->addItem("600", 600); - ui.baudRate->addItem("1200", 1200); - ui.baudRate->addItem("1800", 1800); - ui.baudRate->addItem("2400", 2400); - ui.baudRate->addItem("4800", 4800); - ui.baudRate->addItem("9600", 9600); -#ifdef Q_OS_WIN - ui.baudRate->addItem("14400", 14400); -#endif - ui.baudRate->addItem("19200", 19200); - ui.baudRate->addItem("38400", 38400); -#ifdef Q_OS_WIN - ui.baudRate->addItem("56000", 56000); + + // Keep track of all desired baud rates by OS. These are iterated through + // later and added to ui.baudRate. + QList supportedBaudRates; + + // Baud rates supported only by POSIX systems +#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX) || defined(Q_OS_DARWIN) + supportedBaudRates << 50; + supportedBaudRates << 75; + supportedBaudRates << 134; + supportedBaudRates << 150; + supportedBaudRates << 200; + supportedBaudRates << 1800; #endif - ui.baudRate->addItem("57600", 57600); -#ifdef Q_OS_WIN - ui.baudRate->addItem("76800", 76800); + // Baud rates supported only by Linux +#if defined(Q_OS_LINUX) + supportedBaudRates << 230400; + supportedBaudRates << 460800; + supportedBaudRates << 500000; + supportedBaudRates << 576000; + supportedBaudRates << 921600; #endif - ui.baudRate->addItem("115200", 115200); -#ifdef Q_OS_WIN - ui.baudRate->addItem("128000", 128000); - ui.baudRate->addItem("230400", 230400); - ui.baudRate->addItem("256000", 256000); - ui.baudRate->addItem("460800", 460800); + + // Baud rates supported only by Windows +#if defined(Q_OS_WIN) + supportedBaudRates << 14400; + supportedBaudRates << 56000; + supportedBaudRates << 128000; + supportedBaudRates << 256000; #endif - ui.baudRate->addItem("921600", 921600); + + // Baud rates supported by everyone + supportedBaudRates << 110; + supportedBaudRates << 300; + supportedBaudRates << 600; + supportedBaudRates << 1200; + supportedBaudRates << 2400; + supportedBaudRates << 4800; + supportedBaudRates << 9600; + supportedBaudRates << 19200; + supportedBaudRates << 38400; + supportedBaudRates << 57600; + supportedBaudRates << 115200; + + // Now actually add all of our supported baud rates to the UI. + qSort(supportedBaudRates.begin(), supportedBaudRates.end()); + for (int i = 0; i < supportedBaudRates.size(); ++i) { + ui.baudRate->addItem(QString::number(supportedBaudRates.at(i)), supportedBaudRates.at(i)); + } connect(action, SIGNAL(triggered()), this, SLOT(configureCommunication()));