#include <QSerialPortInfo>
#include <QString>
#include <QList>

QString findStlinkPort()
{
    // Bekannte ST-Link VID/PID-Kombinationen
    const QList<QPair<int,int>> stlinkIds = {
        {0x0483, 0x374B}, // ST-Link V2
        {0x0483, 0x374D}, // ST-Link V3
        {0x0483, 0x3748}, // ältere Varianten
    };

    for (const QSerialPortInfo &info : QSerialPortInfo::availablePorts()) {

        // VID/PID prüfen
        for (const auto &id : stlinkIds) {
            if (info.vendorIdentifier() == id.first &&
                info.productIdentifier() == id.second) {
                return info.systemLocation();   // z.B. "/dev/ttyACM0"
            }
        }

        // Fallback: Produktname prüfen
        if (info.description().contains("STLink", Qt::CaseInsensitive) ||
            info.manufacturer().contains("STMicro", Qt::CaseInsensitive)) {
            return info.systemLocation();
        }
    }

    return QString(); // nichts gefunden
}
