From 92168ee5dc7cfe0e6711207e314b6bd3acb8f291 Mon Sep 17 00:00:00 2001 From: Dany Thinnes Date: Tue, 9 Jun 2026 23:15:29 +0200 Subject: [PATCH] =?UTF-8?q?=C3=9Cber...=20hinzugef=C3=BCgt,=20Icon=20hinzu?= =?UTF-8?q?gef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 14 +- README.md | 150 +++++---- UartscopeLogo.png | Bin 0 -> 57448 bytes include/mainwindow.h | 23 +- include/v4l2worker.h | 49 +++ include/videowidget.h | 71 +++++ resources.qrc | 5 + src/main.cpp | 4 + src/mainwindow.cpp | 218 ++++++++++++- src/v4l2worker.cpp | 288 ++++++++++++++++++ src/videowidget.cpp | 260 ++++++++++++++++ uartscope-git/PKGBUILD | 2 +- uartscope-git/pkg/uartscope/.BUILDINFO | 31 +- uartscope-git/pkg/uartscope/.MTREE | Bin 381 -> 380 bytes uartscope-git/pkg/uartscope/.PKGINFO | 6 +- uartscope-git/pkg/uartscope/usr/bin/uartscope | Bin 175984 -> 209008 bytes uartscope-git/src/uartscope | 2 +- uartscope-git/uartscope/FETCH_HEAD | 2 +- uartscope.desktop.in | 2 +- 19 files changed, 1039 insertions(+), 88 deletions(-) create mode 100644 UartscopeLogo.png create mode 100644 include/v4l2worker.h create mode 100644 include/videowidget.h create mode 100644 resources.qrc create mode 100644 src/v4l2worker.cpp create mode 100644 src/videowidget.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 872782c..0825b2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,8 @@ set(SOURCES src/tagwidget.cpp src/tagpanel.cpp src/connectdialog.cpp + src/v4l2worker.cpp + src/videowidget.cpp ) set(HEADERS @@ -33,9 +35,12 @@ set(HEADERS include/tagwidget.h include/tagpanel.h include/connectdialog.h + include/v4l2worker.h + include/videowidget.h ) -add_executable(uartscope ${SOURCES} ${HEADERS}) +qt6_add_resources(RESOURCES resources.qrc) +add_executable(uartscope ${SOURCES} ${HEADERS} ${RESOURCES}) target_include_directories(uartscope PRIVATE include) @@ -46,6 +51,10 @@ target_link_libraries(uartscope PRIVATE Qt6::SerialPort ) +# V4L2 uses Linux kernel headers directly (linux/videodev2.h) +# These are part of linux-api-headers / linux-libc-dev on all major distros. +# No additional library linkage needed. + # Installation install(TARGETS uartscope DESTINATION bin) @@ -56,3 +65,6 @@ configure_file( @ONLY ) install(FILES ${CMAKE_BINARY_DIR}/uartscope.desktop DESTINATION share/applications) +install(FILES ${CMAKE_SOURCE_DIR}/UartscopeLogo.png + DESTINATION share/icons/hicolor/512x512/apps + RENAME uartscope.png) diff --git a/README.md b/README.md index 6f325cb..bd2799e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # UARTScope -Ein moderner UART-Monitor für Linux mit Qt6-Oberfläche. Gebaut als Ersatz für minicom mit deutlich mehr Komfort – besonders nützlich bei der Entwicklung von Baremetal-Projekten wie [Chica](https://github.com/). +Ein moderner UART-Monitor für Linux mit Qt6-Oberfläche. Gebaut als vollwertiger Ersatz für minicom – besonders nützlich bei der Entwicklung von Baremetal-Projekten wie [Chica](https://git.projekt-hirnfrei.de/diabolus/chica) (Amiga-Hardware-Nachbildung auf dem Raspberry Pi). --- @@ -8,35 +8,45 @@ Ein moderner UART-Monitor für Linux mit Qt6-Oberfläche. Gebaut als Ersatz für | Feature | Beschreibung | |---|---| -| **Unbegrenzter Verlauf** | QPlainTextEdit mit unlimitierter Zeilenzahl – keine Daten gehen verloren | -| **Horizontal + vertikal scrollen** | Kein Zeilenumbruch, voller H-Scrollbalken | -| **Live-Logging** | Jede empfangene Zeile wird mit Zeitstempel in eine Datei geschrieben | -| **Tag-Monitor** | Zeilen mit `[TAG]` werden abgefangen und in eigenen Panels angezeigt | -| **Tabellenansicht** | CSV-formatierte UART-Zeilen werden in einer sortierbaren Tabelle dargestellt | +| **Unbegrenzter Verlauf** | Kein Zeilenlimit – keine Daten gehen verloren, egal wie viel der Pi sendet | +| **Timestamps** | Jede Zeile im Raw-View bekommt automatisch einen `hh:mm:ss.zzz`-Timestamp | +| **H + V Scrolling** | Kein Zeilenumbruch, voller horizontaler Scrollbalken | +| **Live-Logging** | Alle empfangenen Zeilen werden mit Timestamp in eine Datei geschrieben | +| **Tag-Monitor** | Zeilen mit `[TAG]` werden in eigenen Panels angezeigt und aktualisiert | +| **Tag-Filter** | Tags können aus dem Raw-View ausgeblendet werden (nur im Tag-Monitor sichtbar) | +| **Tabellenansicht** | CSV-formatierte UART-Zeilen werden in einer Tabelle dargestellt | | **Suche** | Inkrementelle Volltextsuche im Raw-View | -| **Dunkles Theme** | Fusion Dark – passt gut zur Terminal-Ästhetik | +| **Auto-Reconnect** | Bei Verbindungsabbruch wird automatisch neu verbunden (Intervall einstellbar) | +| **ANSI Clear-Screen** | `\033[2J\033[H` aus der Firmware leert alle Views gleichzeitig | +| **Copy-Buttons** | Raw-View und jedes Tag-Panel haben einen „📋 Copy"-Button | +| **V4L2 Live Video** | HDMI-Grabber direkt eingebunden – Live-Vorschau unter dem Tag-Monitor | +| **Screenshot** | Aktuellen Frame des HDMI-Grabbers als PNG/JPG speichern | +| **Format-Referenz** | Eingebauter Guide (mit Kopieren-Button) für KI-kompatible UART-Formatierung | +| **Fensterlayout** | Fenstergröße, Position und alle Splitter-Positionen werden beim Beenden gespeichert | --- ## Voraussetzungen ```bash +# Arch (empfohlen) +sudo pacman -S cmake qt6-base qt6-serialport + # Ubuntu / Debian sudo apt install cmake qt6-base-dev qt6-serialport-dev libqt6serialport6-dev -# Arch -sudo pacman -S cmake qt6-base qt6-serialport - # Fedora sudo dnf install cmake qt6-qtbase-devel qt6-qtserialport-devel ``` +V4L2 benötigt keine zusätzliche Library – `linux/videodev2.h` ist Teil der Standard-Kernel-Header. + --- ## Build ```bash -git clone +git clone https://git.projekt-hirnfrei.de/diabolus/uartscope.git cd uartscope cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j$(nproc) @@ -50,59 +60,85 @@ sudo cmake --install build --- +## Berechtigungen + +```bash +# UART-Port +sudo usermod -aG dialout $USER + +# HDMI-Grabber / V4L2 +sudo usermod -aG video $USER + +# Einmal ausloggen / neu einloggen +``` + +Grabber testen: +```bash +v4l2-ctl --list-devices # alle /dev/video* Geräte +v4l2-ctl -d /dev/video0 --list-formats-ext # unterstützte Formate & Auflösungen +``` + +--- + ## UART-Ausgabe formatieren -### Tag-Monitor (`[TAG]`) +### Raw-View (immer aktiv) -Der Tag-Monitor fängt Zeilen ab, die ein Tag der Form `[TAGNAME]` enthalten. -Das Tag erscheint weiterhin im Raw-View (eingefärbt), wird aber **zusätzlich** im Tag-Panel aktualisiert. +Jede UART-Zeile erscheint im Raw-View mit Timestamp. Keine besondere Formatierung nötig. -**Watchdog-Beispiel** – dein Watchdog-Handler schickt: -``` -[WDG] uptime=12345 free_heap=43210 load=0.82 -``` -→ UARTScope erstellt automatisch ein Panel `[WDG]` mit einer Tabelle: - -| Key | Value | -|---|---| -| uptime | 12345 | -| free_heap | 43210 | -| load | 0.82 | - -Jedes Update blinkt kurz grün auf – du siehst sofort, dass neue Daten angekommen sind. - -**Mehrere Tags gleichzeitig:** +**Screen leeren** – von der Firmware aus alle Views gleichzeitig leeren: ```c -// In deinem Baremetal-Code: -uart_printf("[WDG] uptime=%lu free=%lu\n", uptime, heap_free); -uart_printf("[VIDEO] line=%d hblank=%d vblank=%d\n", line, hb, vb); -uart_printf("[AUDIO] buf=%d underruns=%d\n", audio_buf, underruns); +uart_printf("\033[2J\033[H"); ``` -Für jeden einzigartigen Tag wird automatisch ein eigenes Panel erstellt. + +### Tag-Monitor + +Zeilen mit `[TAGNAME]` werden im Tag-Monitor-Panel angezeigt **und** im Raw-View hervorgehoben (cyan). Über „Tag filter…" in der Toolbar können Tags vollständig aus dem Raw-View ausgeblendet werden, sodass sie nur noch im Tag-Monitor erscheinen. + +**Format:** `[TAGNAME] key1=value1 key2=value2 ...` + +- Tag-Name: Buchstaben, Ziffern, Underscore – z.B. `WDG`, `VIDEO`, `I2C_BUS` +- Key=Value-Paare: Leerzeichen-getrennt, Werte ohne Leerzeichen +- Ohne Key=Value-Paare wird der rohe String angezeigt + +**Beispiele:** +```c +uart_printf("[WDG] uptime=%lu free_heap=%lu temp=%d\n", + HAL_GetTick(), xPortGetFreeHeapSize(), core_temp); + +uart_printf("[VIDEO] line=%d hblank=%d vblank=%d copper=%d\n", + scanline, hblank_ticks, vblank_ticks, copper_dma); + +uart_printf("[AUDIO] ch=%d buf=%d underruns=%lu\n", + active_channels, buffer_fill, underruns); +``` + +Jeder einzigartige Tag bekommt automatisch ein eigenes Panel. Panels aktualisieren sich in-place – kein Scrollen nötig. ### Tabellenansicht -Die Tabellenansicht erwartet CSV-Zeilen. Optionale Header-Zeile mit `#`: +Optionale Header-Zeile mit `#`, dann CSV-Datenzeilen: ``` #time_ms,temperature,voltage,current 1000,23.5,3.30,0.42 2000,23.7,3.31,0.41 -3000,24.1,3.29,0.43 ``` -Delimiter ist per Dropdown umschaltbar (`,` `;` `\t` `|` `Space`). +Delimiter per Dropdown umschaltbar: `,` `;` `\t` `|` `Space` --- -## Serielle Ports – Berechtigungen +## Einstellungen -Auf den meisten Linux-Distros muss dein User in der Gruppe `dialout` sein: +Beim Beenden werden folgende Einstellungen automatisch gespeichert und beim nächsten Start wiederhergestellt: -```bash -sudo usermod -aG dialout $USER -# Einmal ausloggen / neu einloggen -``` +- Fenstergröße und -position +- Splitter-Positionen (Haupt-Splitter und Tag/Video-Splitter) +- Auto-Reconnect ein/aus und Intervall +- Tag-Filter (ausgeblendete Tags) + +Gespeichert unter `~/.config/ChicaDev/UARTScope.conf` (via `QSettings`). --- @@ -111,14 +147,18 @@ sudo usermod -aG dialout $USER ``` uartscope/ ├── CMakeLists.txt +├── README.md +├── uartscope.desktop.in ├── include/ -│ ├── mainwindow.h -│ ├── serialworker.h ← UART-Empfang im eigenen Thread -│ ├── rawview.h ← Unbegrenzter scrollbarer Log -│ ├── tableview.h ← CSV → QTableWidget +│ ├── mainwindow.h ← Hauptfenster, koordiniert alle Komponenten +│ ├── serialworker.h ← UART-Empfang im eigenen QThread, Auto-Reconnect +│ ├── rawview.h ← Unbegrenzter Log mit Timestamps, Suche, Copy +│ ├── tableview.h ← CSV-Parser → QTableWidget │ ├── tagwidget.h ← Container für Tag-Panels -│ ├── tagpanel.h ← Ein Panel pro [TAG] -│ └── connectdialog.h ← Port-Konfiguration +│ ├── tagpanel.h ← Ein Panel pro [TAG], Key=Value-Tabelle, Copy +│ ├── connectdialog.h ← Port-Konfiguration (Port, Baud, Log-Datei) +│ ├── v4l2worker.h ← V4L2-Capture in std::thread, MJPEG/YUYV/NV12 +│ └── videowidget.h ← Live-Vorschau, Freeze, Screenshot └── src/ ├── main.cpp ├── mainwindow.cpp @@ -127,15 +167,17 @@ uartscope/ ├── tableview.cpp ├── tagwidget.cpp ├── tagpanel.cpp - └── connectdialog.cpp + ├── connectdialog.cpp + ├── v4l2worker.cpp + └── videowidget.cpp ``` --- ## Erweiterungsideen -- **Protokoll-Filter**: Zeilen anhand von Regex ein-/ausblenden -- **Plot-Widget**: numerische Werte aus Tags live als Graph darstellen (Qt Charts) -- **UART senden**: TX-Eingabezeile hinzufügen für bidirektionale Kommunikation -- **Session-Replay**: gespeicherte Log-Dateien wieder abspielen +- **Plot-Widget**: numerische Tag-Werte live als Graph darstellen (Qt Charts) +- **UART senden**: TX-Eingabezeile für bidirektionale Kommunikation - **Hex-View**: rohe Bytes als Hex-Dump anzeigen +- **Session-Replay**: gespeicherte Log-Dateien abspielen +- **Regex-Filter**: Zeilen im Raw-View per regulärem Ausdruck ein-/ausblenden diff --git a/UartscopeLogo.png b/UartscopeLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..9da10c972ae3412a3462d0f3644da1c923ff354a GIT binary patch literal 57448 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�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 +#include +#include +#include #include #include #include @@ -14,6 +17,7 @@ #include "rawview.h" #include "tableview.h" #include "tagwidget.h" +#include "videowidget.h" #include "connectdialog.h" #include @@ -37,21 +41,29 @@ private slots: void onTagDetected(const QString &tag, const QString &value); void showFormatReference(); void configureTagFilter(); + void showAbout(); + +protected: + void closeEvent(QCloseEvent *event) override; private: void setupUi(); void setupToolBar(); void setupStatusBar(); void clearAllViews(); + void doShutdown(); + void saveSettings(); + void restoreSettings(); // Worker & thread QThread *m_thread = nullptr; SerialWorker *m_worker = nullptr; // Views - RawView *m_rawView = nullptr; - TableView *m_tableView = nullptr; - TagWidget *m_tagWidget = nullptr; + RawView *m_rawView = nullptr; + TableView *m_tableView = nullptr; + TagWidget *m_tagWidget = nullptr; + VideoWidget *m_videoWidget= nullptr; // Status bar widgets QLabel *m_portLabel = nullptr; @@ -66,6 +78,11 @@ private: QAction *m_connectAction = nullptr; QAction *m_disconnectAction = nullptr; + // Splitters (saved/restored via QSettings) + QSplitter *m_mainSplitter = nullptr; + QSplitter *m_rightSplitter = nullptr; + SerialConfig m_lastConfig; QSet m_suppressedTags; // tags hidden from Raw view + bool m_shutdownDone = false; }; diff --git a/include/v4l2worker.h b/include/v4l2worker.h new file mode 100644 index 0000000..1f9891d --- /dev/null +++ b/include/v4l2worker.h @@ -0,0 +1,49 @@ +#pragma once +#include +#include +#include +#include +#include + +class V4l2Worker : public QObject +{ + Q_OBJECT + +public: + explicit V4l2Worker(QObject *parent = nullptr); + ~V4l2Worker(); + +public slots: + void startCapture(const QString &device, int width = 1920, int height = 1080); + void stopCapture(); + +signals: + void newFrame(const QImage &frame); + void captureStarted(const QString &device, int width, int height, const QString &format); + void captureStopped(); + void errorOccurred(const QString &message); + +private: + void stop(); // joins m_captureThread, closes device – safe from any thread + void captureLoop(); // runs inside m_captureThread + bool openDevice(const QString &device, int width, int height); + void closeDevice(); + bool initMmap(); + void freeMmap(); + QImage convertToImage(const void *data, size_t size, int width, int height); + QImage yuyv2Rgb(const uchar *src, int width, int height); + QImage nv122Rgb(const uchar *src, int width, int height); + + int m_fd = -1; + int m_width = 1920; + int m_height = 1080; + uint32_t m_pixFmt = 0; + + static constexpr int MMAP_BUFFERS = 4; + struct MmapBuffer { void *start = nullptr; size_t length = 0; }; + MmapBuffer m_buffers[MMAP_BUFFERS]; + int m_nBuffers = 0; + + std::atomic m_running{false}; + std::thread m_captureThread; // dedicated capture thread – not the Qt event thread +}; diff --git a/include/videowidget.h b/include/videowidget.h new file mode 100644 index 0000000..1c73d2e --- /dev/null +++ b/include/videowidget.h @@ -0,0 +1,71 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "v4l2worker.h" + +// VideoWidget shows a live preview of a V4L2 capture device. +// It lives in the right-side panel, below the Tag Monitor. +// Features: +// - Device selector (auto-enumerates /dev/video*) +// - Start / Stop capture +// - Freeze-frame toggle +// - Screenshot (saves current frame as PNG/JPG) +// - Frame is scaled to fit the widget while keeping aspect ratio +class VideoWidget : public QWidget +{ + Q_OBJECT + +public: + explicit VideoWidget(QWidget *parent = nullptr); + ~VideoWidget(); + +public: + // Called by MainWindow::closeEvent to guarantee orderly shutdown before + // widget destruction. Safe to call multiple times. + void shutdown(); + +public slots: + void onNewFrame(const QImage &frame); + +private slots: + void onStartStop(); + void onFreeze(bool frozen); + void onScreenshot(); + void refreshDeviceList(); + +protected: + void paintEvent(QPaintEvent *event) override; + void resizeEvent(QResizeEvent *event) override; + +private: + void setupUi(); + void startCapture(); + void stopCapture(); + void updateScaled(); + + // Worker + QThread *m_thread = nullptr; + V4l2Worker *m_worker = nullptr; + + // Current frame + QImage m_frame; + QImage m_scaled; + bool m_frozen = false; + bool m_running = false; + bool m_shutdownDone = false; + + // UI + QComboBox *m_deviceCombo = nullptr; + QPushButton *m_startBtn = nullptr; + QPushButton *m_freezeBtn = nullptr; + QPushButton *m_screenshotBtn= nullptr; + QLabel *m_infoLabel = nullptr; +}; diff --git a/resources.qrc b/resources.qrc new file mode 100644 index 0000000..af7648e --- /dev/null +++ b/resources.qrc @@ -0,0 +1,5 @@ + + + UartscopeLogo.png + + diff --git a/src/main.cpp b/src/main.cpp index 389506e..47ed4f9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -29,6 +29,10 @@ int main(int argc, char *argv[]) darkPalette.setColor(QPalette::HighlightedText, Qt::white); app.setPalette(darkPalette); + // Set application icon (embedded via Qt resource) + const QIcon appIcon(":/icons/UartscopeLogo.png"); + app.setWindowIcon(appIcon); + MainWindow w; w.show(); return app.exec(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ede276e..7f4a67a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1,4 +1,5 @@ #include "mainwindow.h" +#include #include #include #include @@ -23,6 +24,7 @@ MainWindow::MainWindow(QWidget *parent) setupUi(); setupToolBar(); setupStatusBar(); + restoreSettings(); // ── Worker thread ───────────────────────────────────────────────────────── m_thread = new QThread(this); @@ -44,16 +46,48 @@ MainWindow::MainWindow(QWidget *parent) MainWindow::~MainWindow() { - QMetaObject::invokeMethod(m_worker, "closePort", Qt::BlockingQueuedConnection); - m_thread->quit(); - m_thread->wait(3000); + // All real cleanup happens in closeEvent(). The destructor only runs if + // the window was destroyed without a close event (e.g. programmatically), + // so we guard against double-cleanup with m_shutdownDone. + doShutdown(); +} + +void MainWindow::closeEvent(QCloseEvent *event) +{ + doShutdown(); + event->accept(); +} + +void MainWindow::doShutdown() +{ + if (m_shutdownDone) + return; + m_shutdownDone = true; + + saveSettings(); + + // 1. Stop V4L2 capture first (joins the internal std::thread) + if (m_videoWidget) + m_videoWidget->shutdown(); + + // 2. Stop UART serial worker + if (m_thread && m_thread->isRunning()) { + QMetaObject::invokeMethod(m_worker, "closePort", Qt::BlockingQueuedConnection); + m_thread->quit(); + m_thread->wait(5000); + if (m_thread->isRunning()) + m_thread->terminate(); + } } void MainWindow::setupUi() { - auto *mainSplitter = new QSplitter(Qt::Horizontal, this); + // ── Outer horizontal splitter: (Raw+Table tabs) | right panel ──────────── + m_mainSplitter = new QSplitter(Qt::Horizontal, this); + auto *mainSplitter = m_mainSplitter; mainSplitter->setHandleWidth(5); + // Left: tabs for Raw and Table views auto *tabs = new QTabWidget(mainSplitter); tabs->setTabPosition(QTabWidget::South); @@ -63,12 +97,26 @@ void MainWindow::setupUi() m_tableView = new TableView(tabs); tabs->addTab(m_tableView, tr("Table view")); - m_tagWidget = new TagWidget(mainSplitter); - m_tagWidget->setMinimumWidth(220); - m_tagWidget->setMaximumWidth(420); + // Right: vertical splitter – Tag Monitor on top, Video below + m_rightSplitter = new QSplitter(Qt::Vertical, mainSplitter); + auto *rightSplitter = m_rightSplitter; + rightSplitter->setHandleWidth(5); + rightSplitter->setMinimumWidth(240); + rightSplitter->setMaximumWidth(480); + + m_tagWidget = new TagWidget(rightSplitter); + m_videoWidget = new VideoWidget(rightSplitter); + m_videoWidget->setMinimumHeight(160); + + rightSplitter->addWidget(m_tagWidget); + rightSplitter->addWidget(m_videoWidget); + // Initial split: ~30% tags, ~70% video – user can drag to taste + rightSplitter->setStretchFactor(0, 1); + rightSplitter->setStretchFactor(1, 2); + rightSplitter->setSizes({330, 330}); mainSplitter->addWidget(tabs); - mainSplitter->addWidget(m_tagWidget); + mainSplitter->addWidget(rightSplitter); mainSplitter->setStretchFactor(0, 3); mainSplitter->setStretchFactor(1, 1); @@ -135,6 +183,12 @@ void MainWindow::setupToolBar() auto *helpAction = tb->addAction(tr("Format reference")); helpAction->setToolTip(tr("Show UARTScope output format guide (copy for AI)")); connect(helpAction, &QAction::triggered, this, &MainWindow::showFormatReference); + + tb->addSeparator(); + + // ── About ───────────────────────────────────────────────────────────────── + auto *aboutAction = tb->addAction(tr("Über UARTScope")); + connect(aboutAction, &QAction::triggered, this, &MainWindow::showAbout); } void MainWindow::setupStatusBar() @@ -444,3 +498,151 @@ void MainWindow::configureTagFilter() } dlg->deleteLater(); } + +// ── Settings: save / restore ─────────────────────────────────────────────── + +void MainWindow::saveSettings() +{ + QSettings s("ChicaDev", "UARTScope"); + + // Window geometry & state + s.setValue("window/geometry", saveGeometry()); + s.setValue("window/state", saveState()); + + // Splitter sizes + if (m_mainSplitter) + s.setValue("splitter/main", m_mainSplitter->saveState()); + if (m_rightSplitter) + s.setValue("splitter/right", m_rightSplitter->saveState()); + + // Toolbar settings + s.setValue("reconnect/enabled", m_autoReconnectCb->isChecked()); + s.setValue("reconnect/interval", m_reconnectIntervalSb->value()); + + // Tag filter + QStringList tags(m_suppressedTags.values()); + tags.sort(); + s.setValue("tagfilter/suppressed", tags); +} + +void MainWindow::restoreSettings() +{ + QSettings s("ChicaDev", "UARTScope"); + + // Window geometry & state + if (s.contains("window/geometry")) + restoreGeometry(s.value("window/geometry").toByteArray()); + if (s.contains("window/state")) + restoreState(s.value("window/state").toByteArray()); + + // Splitter sizes (only restore if we have saved data) + if (m_mainSplitter && s.contains("splitter/main")) + m_mainSplitter->restoreState(s.value("splitter/main").toByteArray()); + if (m_rightSplitter && s.contains("splitter/right")) + m_rightSplitter->restoreState(s.value("splitter/right").toByteArray()); + + // Toolbar settings + if (s.contains("reconnect/enabled")) + m_autoReconnectCb->setChecked(s.value("reconnect/enabled").toBool()); + if (s.contains("reconnect/interval")) + m_reconnectIntervalSb->setValue(s.value("reconnect/interval").toInt()); + + // Tag filter + const QStringList tags = s.value("tagfilter/suppressed").toStringList(); + m_suppressedTags.clear(); + for (const QString &t : tags) + if (!t.isEmpty()) + m_suppressedTags.insert(t); +} + +// ── About dialog ────────────────────────────────────────────────────────── + +void MainWindow::showAbout() +{ + auto *dlg = new QDialog(this); + dlg->setWindowTitle(tr("Über UARTScope")); + dlg->setFixedSize(400, 280); + + auto *root = new QVBoxLayout(dlg); + root->setContentsMargins(0, 0, 0, 0); + root->setSpacing(0); + + // ── Header block (dark accent) ──────────────────────────────────────────── + auto *header = new QWidget(dlg); + header->setFixedHeight(110); + header->setStyleSheet("background-color: #1e1e1e;"); + auto *headerLayout = new QHBoxLayout(header); + headerLayout->setContentsMargins(20, 14, 24, 14); + headerLayout->setSpacing(16); + + // Logo + auto *logoLabel = new QLabel(header); + const QPixmap logoPix(":/icons/UartscopeLogo.png"); + logoLabel->setPixmap(logoPix.scaled(72, 72, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + logoLabel->setStyleSheet("background: transparent;"); + logoLabel->setFixedSize(72, 72); + + // Title + subtitle + auto *titleBlock = new QVBoxLayout(); + titleBlock->setSpacing(4); + auto *titleLabel = new QLabel("UARTScope", header); + titleLabel->setStyleSheet( + "color: #ffffff; font-size: 26px; font-weight: bold; background: transparent;"); + auto *subtitleLabel = new QLabel(tr("UART-Monitor & HDMI-Viewer für Baremetal-Entwicklung"), header); + subtitleLabel->setStyleSheet( + "color: #56b6c2; font-size: 11px; background: transparent;"); + titleBlock->addWidget(titleLabel); + titleBlock->addWidget(subtitleLabel); + + headerLayout->addWidget(logoLabel); + headerLayout->addLayout(titleBlock); + root->addWidget(header); + + // ── Info grid ───────────────────────────────────────────────────────────── + auto *body = new QWidget(dlg); + body->setStyleSheet("background-color: #252526;"); + auto *grid = new QGridLayout(body); + grid->setContentsMargins(24, 20, 24, 20); + grid->setVerticalSpacing(10); + grid->setHorizontalSpacing(16); + grid->setColumnMinimumWidth(0, 90); + + const QString labelStyle = "color: #888888; font-weight: bold; background: transparent;"; + const QString valueStyle = "color: #d4d4d4; background: transparent;"; + + auto addRow = [&](int row, const QString &label, const QString &value) { + auto *l = new QLabel(label, body); + auto *v = new QLabel(value, body); + l->setStyleSheet(labelStyle); + v->setStyleSheet(valueStyle); + l->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + grid->addWidget(l, row, 0); + grid->addWidget(v, row, 1); + }; + + addRow(0, tr("Version"), "1.0.0"); + addRow(1, tr("Entwickler"), "Dany Thinnes"); + addRow(2, tr("Projekt"), "Projekt Hirnfrei"); + addRow(3, tr("Framework"), QString("Qt %1").arg(QT_VERSION_STR)); + addRow(4, tr("Sprache"), "C++17"); + + root->addWidget(body, 1); + + // ── Footer with close button ────────────────────────────────────────────── + auto *footer = new QWidget(dlg); + footer->setStyleSheet("background-color: #252526; border-top: 1px solid #3c3c3c;"); + auto *footerLayout = new QHBoxLayout(footer); + footerLayout->setContentsMargins(16, 10, 16, 10); + + auto *closeBtn = new QPushButton(tr("Schließen"), footer); + closeBtn->setDefault(true); + closeBtn->setMinimumWidth(90); + connect(closeBtn, &QPushButton::clicked, dlg, &QDialog::accept); + + footerLayout->addStretch(); + footerLayout->addWidget(closeBtn); + root->addWidget(footer); + + dlg->exec(); + dlg->deleteLater(); +} diff --git a/src/v4l2worker.cpp b/src/v4l2worker.cpp new file mode 100644 index 0000000..9c38061 --- /dev/null +++ b/src/v4l2worker.cpp @@ -0,0 +1,288 @@ +#include "v4l2worker.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +static int xioctl(int fd, unsigned long req, void *arg) +{ + int r; + do { r = ::ioctl(fd, req, arg); } while (r == -1 && errno == EINTR); + return r; +} + +V4l2Worker::V4l2Worker(QObject *parent) + : QObject(parent) +{} + +V4l2Worker::~V4l2Worker() +{ + stop(); +} + +// ── public slots ────────────────────────────────────────────────────────────── + +void V4l2Worker::startCapture(const QString &device, int width, int height) +{ + if (m_running.load()) + stop(); + + if (!openDevice(device, width, height)) + return; + + m_running.store(true); + + // Run the blocking capture loop in a plain std::thread so the Qt event + // loop of this worker object stays responsive to stopCapture() signals. + m_captureThread = std::thread([this] { captureLoop(); }); +} + +void V4l2Worker::stopCapture() +{ + stop(); +} + +// ── internal stop (safe to call from any thread) ────────────────────────────── + +void V4l2Worker::stop() +{ + m_running.store(false); + if (m_captureThread.joinable()) + m_captureThread.join(); // wait for captureLoop() to exit + closeDevice(); +} + +// ── capture loop (runs in m_captureThread) ──────────────────────────────────── + +void V4l2Worker::captureLoop() +{ + v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + if (xioctl(m_fd, VIDIOC_STREAMON, &type) == -1) { + emit errorOccurred(tr("VIDIOC_STREAMON failed: %1").arg(strerror(errno))); + m_running.store(false); + return; + } + + while (m_running.load()) { + fd_set fds; + FD_ZERO(&fds); + FD_SET(m_fd, &fds); + timeval tv{0, 100000}; // 100 ms timeout → checks m_running 10x/sec + const int r = ::select(m_fd + 1, &fds, nullptr, nullptr, &tv); + if (r == 0) continue; + if (r == -1) { + if (errno == EINTR) continue; + emit errorOccurred(tr("select() failed: %1").arg(strerror(errno))); + break; + } + + v4l2_buffer buf{}; + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + buf.memory = V4L2_MEMORY_MMAP; + if (xioctl(m_fd, VIDIOC_DQBUF, &buf) == -1) { + if (errno == EAGAIN) continue; + emit errorOccurred(tr("VIDIOC_DQBUF failed: %1").arg(strerror(errno))); + break; + } + + const QImage img = convertToImage( + m_buffers[buf.index].start, buf.bytesused, m_width, m_height); + if (!img.isNull()) + emit newFrame(img); + + if (xioctl(m_fd, VIDIOC_QBUF, &buf) == -1) { + emit errorOccurred(tr("VIDIOC_QBUF failed: %1").arg(strerror(errno))); + break; + } + } + + xioctl(m_fd, VIDIOC_STREAMOFF, &type); + emit captureStopped(); +} + +// ── device open / close ─────────────────────────────────────────────────────── + +bool V4l2Worker::openDevice(const QString &device, int width, int height) +{ + m_width = width; + m_height = height; + + m_fd = ::open(device.toLocal8Bit().constData(), O_RDWR | O_NONBLOCK); + if (m_fd == -1) { + emit errorOccurred(tr("Cannot open %1: %2").arg(device, strerror(errno))); + return false; + } + + v4l2_capability cap{}; + if (xioctl(m_fd, VIDIOC_QUERYCAP, &cap) == -1) { + emit errorOccurred(tr("VIDIOC_QUERYCAP failed: %1").arg(strerror(errno))); + closeDevice(); + return false; + } + if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) { + emit errorOccurred(tr("%1 is not a video capture device").arg(device)); + closeDevice(); + return false; + } + + const uint32_t preferred[] = { + V4L2_PIX_FMT_MJPEG, + V4L2_PIX_FMT_YUYV, + V4L2_PIX_FMT_NV12, + 0 + }; + + m_pixFmt = 0; + for (int i = 0; preferred[i]; ++i) { + v4l2_format fmt{}; + fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + fmt.fmt.pix.width = static_cast(width); + fmt.fmt.pix.height = static_cast(height); + fmt.fmt.pix.pixelformat = preferred[i]; + fmt.fmt.pix.field = V4L2_FIELD_ANY; + if (xioctl(m_fd, VIDIOC_S_FMT, &fmt) == 0) { + m_pixFmt = fmt.fmt.pix.pixelformat; + m_width = static_cast(fmt.fmt.pix.width); + m_height = static_cast(fmt.fmt.pix.height); + break; + } + } + if (!m_pixFmt) { + emit errorOccurred(tr("No supported pixel format found on %1").arg(device)); + closeDevice(); + return false; + } + + QString fmtName; + switch (m_pixFmt) { + case V4L2_PIX_FMT_MJPEG: fmtName = "MJPEG"; break; + case V4L2_PIX_FMT_YUYV: fmtName = "YUYV"; break; + case V4L2_PIX_FMT_NV12: fmtName = "NV12"; break; + default: fmtName = "?"; break; + } + + if (!initMmap()) { + closeDevice(); + return false; + } + + emit captureStarted(device, m_width, m_height, fmtName); + return true; +} + +void V4l2Worker::closeDevice() +{ + freeMmap(); + if (m_fd != -1) { + ::close(m_fd); + m_fd = -1; + } +} + +bool V4l2Worker::initMmap() +{ + v4l2_requestbuffers req{}; + req.count = MMAP_BUFFERS; + req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + req.memory = V4L2_MEMORY_MMAP; + if (xioctl(m_fd, VIDIOC_REQBUFS, &req) == -1) { + emit errorOccurred(tr("VIDIOC_REQBUFS failed: %1").arg(strerror(errno))); + return false; + } + m_nBuffers = static_cast(req.count); + + for (int i = 0; i < m_nBuffers; ++i) { + v4l2_buffer buf{}; + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + buf.memory = V4L2_MEMORY_MMAP; + buf.index = static_cast(i); + if (xioctl(m_fd, VIDIOC_QUERYBUF, &buf) == -1) { + emit errorOccurred(tr("VIDIOC_QUERYBUF failed: %1").arg(strerror(errno))); + return false; + } + m_buffers[i].length = buf.length; + m_buffers[i].start = ::mmap(nullptr, buf.length, + PROT_READ | PROT_WRITE, MAP_SHARED, + m_fd, buf.m.offset); + if (m_buffers[i].start == MAP_FAILED) { + emit errorOccurred(tr("mmap failed: %1").arg(strerror(errno))); + return false; + } + if (xioctl(m_fd, VIDIOC_QBUF, &buf) == -1) { + emit errorOccurred(tr("VIDIOC_QBUF failed: %1").arg(strerror(errno))); + return false; + } + } + return true; +} + +void V4l2Worker::freeMmap() +{ + for (int i = 0; i < m_nBuffers; ++i) { + if (m_buffers[i].start && m_buffers[i].start != MAP_FAILED) { + ::munmap(m_buffers[i].start, m_buffers[i].length); + m_buffers[i].start = nullptr; + } + } + m_nBuffers = 0; +} + +QImage V4l2Worker::convertToImage(const void *data, size_t size, int width, int height) +{ + switch (m_pixFmt) { + case V4L2_PIX_FMT_MJPEG: { + QByteArray ba(static_cast(data), static_cast(size)); + QBuffer buf(&ba); + QImageReader reader(&buf, "JPEG"); + return reader.read(); + } + case V4L2_PIX_FMT_YUYV: + return yuyv2Rgb(static_cast(data), width, height); + case V4L2_PIX_FMT_NV12: + return nv122Rgb(static_cast(data), width, height); + default: + return {}; + } +} + +QImage V4l2Worker::yuyv2Rgb(const uchar *src, int width, int height) +{ + QImage img(width, height, QImage::Format_RGB32); + for (int y = 0; y < height; ++y) { + const uchar *row = src + y * width * 2; + QRgb *dst = reinterpret_cast(img.scanLine(y)); + for (int x = 0; x < width; x += 2) { + const int Y0 = row[0], U = row[1]-128, Y1 = row[2], V = row[3]-128; + row += 4; + auto clamp = [](int v) { return static_cast(v<0?0:v>255?255:v); }; + dst[x] = qRgb(clamp(Y0+1.402f*V), clamp(Y0-0.344f*U-0.714f*V), clamp(Y0+1.772f*U)); + dst[x+1] = qRgb(clamp(Y1+1.402f*V), clamp(Y1-0.344f*U-0.714f*V), clamp(Y1+1.772f*U)); + } + } + return img; +} + +QImage V4l2Worker::nv122Rgb(const uchar *src, int width, int height) +{ + QImage img(width, height, QImage::Format_RGB32); + const uchar *uvPlane = src + width * height; + auto clamp = [](int v) { return static_cast(v<0?0:v>255?255:v); }; + for (int y = 0; y < height; ++y) { + const uchar *yRow = src + y * width; + const uchar *uvRow = uvPlane + (y/2) * width; + QRgb *dst = reinterpret_cast(img.scanLine(y)); + for (int x = 0; x < width; ++x) { + const int Y = yRow[x], U = uvRow[x&~1]-128, V = uvRow[(x&~1)+1]-128; + dst[x] = qRgb(clamp(Y+1.402f*V), clamp(Y-0.344f*U-0.714f*V), clamp(Y+1.772f*U)); + } + } + return img; +} diff --git a/src/videowidget.cpp b/src/videowidget.cpp new file mode 100644 index 0000000..79a3a61 --- /dev/null +++ b/src/videowidget.cpp @@ -0,0 +1,260 @@ +#include "videowidget.h" + +#include +#include +#include +#include +#include +#include +#include + +// Enumerate /dev/video* entries +static QStringList enumerateVideoDevices() +{ + QStringList devices; + const QDir dev("/dev"); + const auto entries = dev.entryList({"video*"}, QDir::System, QDir::Name); + for (const auto &e : entries) + devices << "/dev/" + e; + return devices; +} + +// ── ctor / dtor ─────────────────────────────────────────────────────────────── + +VideoWidget::VideoWidget(QWidget *parent) + : QWidget(parent) +{ + setupUi(); + + m_thread = new QThread(this); + m_worker = new V4l2Worker(); + m_worker->moveToThread(m_thread); + + connect(m_thread, &QThread::finished, m_worker, &QObject::deleteLater); + + connect(m_worker, &V4l2Worker::newFrame, this, &VideoWidget::onNewFrame, + Qt::QueuedConnection); + connect(m_worker, &V4l2Worker::captureStarted, this, [this](const QString &dev, int w, int h, const QString &fmt) { + m_infoLabel->setText(tr("%1 %2×%3 %4").arg(dev).arg(w).arg(h).arg(fmt)); + m_running = true; + m_startBtn->setText(tr("■ Stop")); + }); + connect(m_worker, &V4l2Worker::captureStopped, this, [this] { + m_running = false; + m_startBtn->setText(tr("▶ Start")); + m_infoLabel->setText(tr("Stopped")); + update(); + }); + connect(m_worker, &V4l2Worker::errorOccurred, this, [this](const QString &msg) { + m_infoLabel->setText(tr("Error: %1").arg(msg)); + m_running = false; + m_startBtn->setText(tr("▶ Start")); + }); + + m_thread->start(); +} + +void VideoWidget::shutdown() +{ + if (m_shutdownDone) + return; + m_shutdownDone = true; + + // stopCapture() sets m_running=false and joins the std::thread internally. + // Must happen before we quit the Qt event thread. + m_worker->stopCapture(); + + if (m_thread && m_thread->isRunning()) { + m_thread->quit(); + m_thread->wait(5000); + if (m_thread->isRunning()) + m_thread->terminate(); + } +} + +VideoWidget::~VideoWidget() +{ + shutdown(); +} + +// ── UI setup ───────────────────────────────────────────────────────────────── + +void VideoWidget::setupUi() +{ + setMinimumHeight(140); + + auto *layout = new QVBoxLayout(this); + layout->setContentsMargins(2, 2, 2, 2); + layout->setSpacing(3); + + // ── Controls row ────────────────────────────────────────────────────────── + auto *ctrlRow = new QHBoxLayout(); + ctrlRow->setSpacing(4); + + m_deviceCombo = new QComboBox(this); + m_deviceCombo->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + refreshDeviceList(); + + auto *refreshBtn = new QPushButton("↻", this); + refreshBtn->setMaximumWidth(26); + refreshBtn->setToolTip(tr("Refresh device list")); + connect(refreshBtn, &QPushButton::clicked, this, &VideoWidget::refreshDeviceList); + + m_startBtn = new QPushButton(tr("▶ Start"), this); + m_startBtn->setMaximumWidth(70); + connect(m_startBtn, &QPushButton::clicked, this, &VideoWidget::onStartStop); + + m_freezeBtn = new QPushButton(tr("❚❚ Freeze"), this); + m_freezeBtn->setCheckable(true); + m_freezeBtn->setMaximumWidth(80); + connect(m_freezeBtn, &QPushButton::toggled, this, &VideoWidget::onFreeze); + + m_screenshotBtn = new QPushButton(tr("📷"), this); + m_screenshotBtn->setMaximumWidth(32); + m_screenshotBtn->setToolTip(tr("Save screenshot (PNG/JPG)")); + connect(m_screenshotBtn, &QPushButton::clicked, this, &VideoWidget::onScreenshot); + + ctrlRow->addWidget(m_deviceCombo, 1); + ctrlRow->addWidget(refreshBtn); + ctrlRow->addWidget(m_startBtn); + ctrlRow->addWidget(m_freezeBtn); + ctrlRow->addWidget(m_screenshotBtn); + layout->addLayout(ctrlRow); + + // ── Info label ──────────────────────────────────────────────────────────── + m_infoLabel = new QLabel(tr("No device started"), this); + m_infoLabel->setStyleSheet("color: gray; font-size: 9px;"); + layout->addWidget(m_infoLabel); + + // The video frame is drawn directly in paintEvent – no QLabel needed. + // We leave stretch space for it. + layout->addStretch(1); +} + +// ── Slots ───────────────────────────────────────────────────────────────────── + +void VideoWidget::onStartStop() +{ + if (m_running) + stopCapture(); + else + startCapture(); +} + +void VideoWidget::onFreeze(bool frozen) +{ + m_frozen = frozen; + m_freezeBtn->setText(frozen ? tr("▶ Live") : tr("❚❚ Freeze")); +} + +void VideoWidget::onScreenshot() +{ + if (m_frame.isNull()) + return; + + const QString defaultName = + QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) + + "/uartscope_" + + QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss") + + ".png"; + + const QString path = QFileDialog::getSaveFileName( + this, tr("Save screenshot"), defaultName, + tr("PNG Image (*.png);;JPEG Image (*.jpg *.jpeg)")); + + if (!path.isEmpty()) + m_frame.save(path); +} + +void VideoWidget::onNewFrame(const QImage &frame) +{ + if (m_frozen) + return; + m_frame = frame; + updateScaled(); + update(); // trigger paintEvent +} + +void VideoWidget::refreshDeviceList() +{ + const QString current = m_deviceCombo->currentText(); + m_deviceCombo->clear(); + const auto devices = enumerateVideoDevices(); + for (const auto &d : devices) + m_deviceCombo->addItem(d); + // Restore previous selection if still present + const int idx = m_deviceCombo->findText(current); + if (idx >= 0) + m_deviceCombo->setCurrentIndex(idx); +} + +// ── Capture start/stop ──────────────────────────────────────────────────────── + +void VideoWidget::startCapture() +{ + const QString dev = m_deviceCombo->currentText(); + if (dev.isEmpty()) + return; + m_frame = QImage(); + m_scaled = QImage(); + // startCapture blocks in the worker thread until stopCapture() is called + QMetaObject::invokeMethod(m_worker, "startCapture", + Qt::QueuedConnection, + Q_ARG(QString, dev), + Q_ARG(int, 1920), + Q_ARG(int, 1080)); +} + +void VideoWidget::stopCapture() +{ + QMetaObject::invokeMethod(m_worker, "stopCapture", Qt::QueuedConnection); +} + +// ── Paint ───────────────────────────────────────────────────────────────────── + +void VideoWidget::updateScaled() +{ + // Video area = widget height minus the two control rows (~55 px) + const QRect videoRect(0, 55, width(), height() - 55); + if (videoRect.width() < 10 || videoRect.height() < 10 || m_frame.isNull()) + return; + + m_scaled = m_frame.scaled(videoRect.size(), Qt::KeepAspectRatio, + Qt::SmoothTransformation); +} + +void VideoWidget::paintEvent(QPaintEvent *) +{ + QPainter p(this); + + // Background + p.fillRect(rect(), QColor(0x10, 0x10, 0x10)); + + if (m_scaled.isNull()) { + p.setPen(QColor(0x44, 0x44, 0x44)); + p.drawText(rect(), Qt::AlignCenter, + m_running ? tr("Waiting for frames…") : tr("No signal")); + return; + } + + // Centre the scaled frame in the video area + const QRect videoRect(0, 55, width(), height() - 55); + const QPoint origin( + videoRect.left() + (videoRect.width() - m_scaled.width()) / 2, + videoRect.top() + (videoRect.height() - m_scaled.height()) / 2); + p.drawImage(origin, m_scaled); + + // Frozen overlay + if (m_frozen) { + p.setPen(QColor(0xff, 0xcc, 0x00)); + p.setFont(QFont("Sans", 9, QFont::Bold)); + p.drawText(videoRect.adjusted(4, 4, -4, -4), + Qt::AlignTop | Qt::AlignRight, tr("FREEZE")); + } +} + +void VideoWidget::resizeEvent(QResizeEvent *event) +{ + QWidget::resizeEvent(event); + updateScaled(); +} diff --git a/uartscope-git/PKGBUILD b/uartscope-git/PKGBUILD index 7b21008..0595ee7 100644 --- a/uartscope-git/PKGBUILD +++ b/uartscope-git/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: diabolus pkgname=uartscope -pkgver=1.0.0.r0.gcc102c9 +pkgver=1.0.0.r1.g2181f25 pkgrel=1 pkgdesc="Qt6-based UART serial monitor with tag monitoring, table view and auto-reconnect" arch=('x86_64' 'aarch64') diff --git a/uartscope-git/pkg/uartscope/.BUILDINFO b/uartscope-git/pkg/uartscope/.BUILDINFO index 6da4f23..a5eff86 100644 --- a/uartscope-git/pkg/uartscope/.BUILDINFO +++ b/uartscope-git/pkg/uartscope/.BUILDINFO @@ -1,11 +1,11 @@ format = 2 pkgname = uartscope pkgbase = uartscope -pkgver = 1.0.0.r0.gcc102c9-1 +pkgver = 1.0.0.r1.g2181f25-1 pkgarch = x86_64 -pkgbuild_sha256sum = b55d7f4f6a11dd33fc6e311f94ea98ca2ad601fa044e110b56af77a00ec7cdbc +pkgbuild_sha256sum = 367d5f02c03027788d532bdeda7084f79008b9dcf902393b209ad7f2ae43859c packager = Unknown Packager -builddate = 1780954815 +builddate = 1780988717 builddir = /home/diabolus/Arbeit/Projekt-Hirnfrei/uartscope/uartscope-git startdir = /home/diabolus/Arbeit/Projekt-Hirnfrei/uartscope/uartscope-git buildtool = makepkg @@ -287,7 +287,7 @@ installed = dhcpcd-10.3.2-1-x86_64 installed = dialog-1:1.3_20260107-1-x86_64 installed = diffutils-3.12-2-x86_64 installed = ding-libs-0.7.0-1-x86_64 -installed = discord-1:1.0.141-1-x86_64 +installed = discord-1:1.0.142-1-x86_64 installed = discount-3.0.1.2-1-x86_64 installed = djvulibre-3.5.30-1-x86_64 installed = dkms-3.4.1-1-any @@ -399,7 +399,7 @@ installed = freeglut-3.8.0-1-x86_64 installed = freeoffice-1234-1-x86_64 installed = freerdp-2:3.26.0-1-x86_64 installed = freetype2-2.14.3-1-x86_64 -installed = frei0r-plugins-3.1.3-1-x86_64 +installed = frei0r-plugins-3.2.0-1-x86_64 installed = fribidi-1.0.16-2-x86_64 installed = fritzing-1.0.7-2-x86_64 installed = fs-uae-3.2.35-2-x86_64 @@ -525,7 +525,7 @@ installed = go-tools-4:0.45.0-1-x86_64 installed = gobject-introspection-1.86.0-2-x86_64 installed = gobject-introspection-runtime-1.86.0-2-x86_64 installed = gom-0.5.6-1-x86_64 -installed = google-chrome-149.0.7827.53-1-x86_64 +installed = google-chrome-149.0.7827.102-1-x86_64 installed = google-earth-pro-7.3.7.1155-1-x86_64 installed = google-glog-0.7.1-2-x86_64 installed = goverlay-1.8.2-1-x86_64 @@ -814,7 +814,7 @@ installed = kservice5-5.116.0-3-x86_64 installed = ksmtp-26.04.2-1-x86_64 installed = kstatusnotifieritem-6.26.0-2-x86_64 installed = ksvg-6.26.0-2-x86_64 -installed = ksystemstats-6.6.5-1-x86_64 +installed = ksystemstats-6.6.5-2-x86_64 installed = ktextaddons-2.0.2-1-x86_64 installed = ktexteditor-6.26.0-1-x86_64 installed = ktexttemplate-6.26.0-2-x86_64 @@ -829,7 +829,7 @@ installed = kwayland-6.6.5-1-x86_64 installed = kwayland5-5.116.0-2-x86_64 installed = kwidgetsaddons-6.26.0-1-x86_64 installed = kwidgetsaddons5-5.116.0-2-x86_64 -installed = kwin-6.6.5-3-x86_64 +installed = kwin-6.6.5-4-x86_64 installed = kwindowsystem-6.26.0-2-x86_64 installed = kwindowsystem5-5.116.0-2-x86_64 installed = kxmlgui-6.26.0-1-x86_64 @@ -992,7 +992,7 @@ installed = lib32-pipewire-jack-1:1.6.6-1-x86_64 installed = lib32-pixman-0.46.4-1-x86_64 installed = lib32-popt-1.19-2-x86_64 installed = lib32-rust-libs-1:1.96.0-1-x86_64 -installed = lib32-sdl2-compat-2.32.68-1-x86_64 +installed = lib32-sdl2-compat-2.32.70-1-x86_64 installed = lib32-sdl3-3.4.10-1-x86_64 installed = lib32-speex-1.2.1-2-x86_64 installed = lib32-spirv-tools-1:1.4.350.0-1-x86_64 @@ -1184,7 +1184,7 @@ installed = libkleo-26.04.2-1-x86_64 installed = libksba-1.8.0-1-x86_64 installed = libkscreen-6.6.5-1-x86_64 installed = libksieve-26.04.2-1-x86_64 -installed = libksysguard-6.6.5-1-x86_64 +installed = libksysguard-6.6.5-2-x86_64 installed = liblc3-1.1.3-2-x86_64 installed = libldac-2.0.2.3-3-x86_64 installed = libldap-2.6.13-1-x86_64 @@ -1939,7 +1939,7 @@ installed = python-dbus-1.4.0-2-x86_64 installed = python-decorator-5.3.1-1-any installed = python-defusedxml-0.7.1-8-any installed = python-dill-0.4.1-1-any -installed = python-distlib-0.4.1-1-any +installed = python-distlib-0.4.2-1-any installed = python-distro-1.9.0-4-any installed = python-distutils-extra-2.39-15-any installed = python-django-5.2.13-1-any @@ -2121,7 +2121,7 @@ installed = python-smartypants-2.0.2-2-any installed = python-sniffio-1.3.1-5-any installed = python-snowballstemmer-3.1.1-1-any installed = python-sortedcontainers-2.4.0-8-any -installed = python-soundfile-0.13.1-1-any +installed = python-soundfile-0.14.0-1-any installed = python-soupsieve-2.8.4-1-any installed = python-soxr-1.1.0-2-x86_64 installed = python-sphinx-9.1.0-1-any @@ -2169,7 +2169,7 @@ installed = python-uv-build-0.11.19-1-x86_64 installed = python-vcs-versioning-1.1.1-1-any installed = python-vdf-4.0-5-any installed = python-virtualenv-21.4.2-1-any -installed = python-wcwidth-0.8.0-1-any +installed = python-wcwidth-0.8.1-1-any installed = python-webencodings-0.5.1-13-any installed = python-websocket-client-1.9.0-3-any installed = python-websockets-16.0-1-x86_64 @@ -2432,7 +2432,7 @@ installed = scummvm-2026.2.0-1-x86_64 installed = sddm-0.21.0-7-x86_64 installed = sddm-sugar-candy-git-1.6r42.d31dbf5-1-any installed = sdl12-compat-1.2.68-2-x86_64 -installed = sdl2-compat-2.32.68-1-x86_64 +installed = sdl2-compat-2.32.70-1-x86_64 installed = sdl2_image-2.8.12-1-x86_64 installed = sdl2_mixer-2.8.2-1-x86_64 installed = sdl2_net-2:2.4.0-1-x86_64 @@ -2790,6 +2790,7 @@ installed = ttf-ubuntu-font-family-1:0.83-2-any installed = tumbler-4.20.1-1-x86_64 installed = twolame-0.4.0-4-x86_64 installed = tzdata-2026b-1-x86_64 +installed = uartscope-1.0.0.r0.gcc102c9-1-x86_64 installed = uchardet-0.0.8-4-x86_64 installed = udisks2-2.11.1-2-x86_64 installed = unifdef-2.12-4-x86_64 @@ -2828,7 +2829,7 @@ installed = virtualbox-7.2.8-2-x86_64 installed = virtualbox-guest-iso-7.2.8-1-any installed = virtualbox-host-dkms-7.2.8-2-x86_64 installed = virtualgl-3.1.4-1-x86_64 -installed = visual-studio-code-bin-1.123.0-5-x86_64 +installed = visual-studio-code-bin-1.123.0-6-x86_64 installed = vivaldi-8.0.4033.44-1-x86_64 installed = vivaldi-ffmpeg-codecs-148.0.7778.256-1-x86_64 installed = vlc-3.0.23_2-6-x86_64 diff --git a/uartscope-git/pkg/uartscope/.MTREE b/uartscope-git/pkg/uartscope/.MTREE index e32b1bcc60ce411da94f22e6df9cb43a8298bde4..1d33d2fc137450ee52483271ddfaa3f9f4c6f090 100644 GIT binary patch literal 380 zcmV-?0fYV@iwFP!000001D#UKjubHryw6v(#C_V2JP&NafOPCD6qufutk35MHCJRC)*;M{IM?q7eo z`S9lE{PVG45el=kFaMa4`+*T_GQ2zSVV`oG|91&Kd;jHwxvJoTnZL z4M;L`>?d=F3J7@c1{x?htH?izKfizXH(HPQoU`VT6=JYZ8!NQPTA7Qaf=KF=y>n1Q z73T!2A!H~Ky&ADeZt!TxMSAqUcW_>pE94i)WL_Q<#yUUzQ_^@Y%eJ=TN&h5>dPDHS zM`&WXaOIegJu|jYiZgW)5{O~9PJJ>C$rD1gRzd{LHI!I$PV~gzYcAJ#U$l8i8_Vf* zKew{Y$A|TQ{`^+D7hS(@$J3Q6zc%b?g#ta-otg`5DM+Q%BpWypjAV#bOK8%ET02Tq aD1`)#ON!w7Al3DkV!Iz@i(y{m0ssK`bFoYS literal 381 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 LOAD&Z1d{$2fui4m literal 175984 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