#pragma once #include #include #include #include #include #include #include #include #include struct SerialConfig { // Which transport to use: a real/virtual serial port, or a plain TCP // connection (e.g. for emulators/firmware that stream their debug // UART over the network, such as FS-UAE piped through socat). enum class ConnectionType { Serial, Network }; ConnectionType connectionType = ConnectionType::Serial; // Serial-specific QString portName; qint32 baudRate = 115200; QSerialPort::DataBits dataBits = QSerialPort::Data8; QSerialPort::Parity parity = QSerialPort::NoParity; QSerialPort::StopBits stopBits = QSerialPort::OneStop; QSerialPort::FlowControl flowControl = QSerialPort::NoFlowControl; // Network-specific QString networkHost; quint16 networkPort = 0; // Common QString logFilePath; }; class ConnectDialog : public QDialog { Q_OBJECT public: explicit ConnectDialog(QWidget *parent = nullptr); SerialConfig config() const; private slots: void browseLogFile(); void refreshPorts(); private: void addPtyPorts(); QTabWidget *m_modeTabs = nullptr; QComboBox *m_portCombo = nullptr; QComboBox *m_baudCombo = nullptr; QComboBox *m_dataBitsCombo = nullptr; QComboBox *m_parityCombo = nullptr; QComboBox *m_stopBitsCombo = nullptr; QComboBox *m_flowCombo = nullptr; QLineEdit *m_hostEdit = nullptr; QSpinBox *m_portSpin = nullptr; QLineEdit *m_logPathEdit = nullptr; };