- SIGSEGV/SIGABRT crash handler in ui/main.cc prints stack trace to stderr - Fixed onroad crash: guard update_model() against empty model position data (was dereferencing end()-1 on empty list when modeld not running in bench) - Status window: added device temperature and fan speed - Interactive timeout returns to splash/onroad (not ClearPilotPanel) - bench_cmd dump detects crash loops via UI process uptime check - bench_cmd wait_ready timeout increased to 20s - Restored camerad to bench ignore list (not needed for UI testing) - Updated CLAUDE.md with crash debugging procedures Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
1.4 KiB
C++
Executable File
72 lines
1.4 KiB
C++
Executable File
#pragma once
|
|
|
|
#include <QStackedLayout>
|
|
#include <QLabel>
|
|
#include <QSocketNotifier>
|
|
#include <QTimer>
|
|
#include <QWidget>
|
|
|
|
#include "selfdrive/ui/qt/home.h"
|
|
#include "selfdrive/ui/qt/offroad/onboarding.h"
|
|
#include "selfdrive/ui/qt/offroad/settings.h"
|
|
|
|
class StatusWindow : public QFrame {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit StatusWindow(QWidget *parent = 0);
|
|
|
|
protected:
|
|
void mousePressEvent(QMouseEvent *e) override;
|
|
|
|
signals:
|
|
void closeStatus();
|
|
|
|
private slots:
|
|
void refresh();
|
|
|
|
private:
|
|
QLabel *storage_label;
|
|
QLabel *ram_label;
|
|
QLabel *load_label;
|
|
QLabel *temp_label;
|
|
QLabel *fan_label;
|
|
QLabel *ip_label;
|
|
QLabel *wifi_label;
|
|
QLabel *vpn_label;
|
|
QLabel *gps_label;
|
|
QLabel *time_label;
|
|
QLabel *telemetry_label;
|
|
};
|
|
|
|
class MainWindow : public QWidget {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit MainWindow(QWidget *parent = 0);
|
|
|
|
private:
|
|
bool eventFilter(QObject *obj, QEvent *event) override;
|
|
void openSettings(int index = 0, const QString ¶m = "");
|
|
void openStatus();
|
|
void closeSettings();
|
|
QString dumpWidgetTree(QWidget *w, int depth = 0);
|
|
|
|
QStackedLayout *main_layout;
|
|
HomeWindow *homeWindow;
|
|
SettingsWindow *settingsWindow;
|
|
StatusWindow *statusWindow;
|
|
OnboardingWindow *onboardingWindow;
|
|
|
|
// CLEARPILOT: UI introspection RPC
|
|
void *zmq_ctx = nullptr;
|
|
void *zmq_sock = nullptr;
|
|
QSocketNotifier *rpc_notifier = nullptr;
|
|
|
|
// FrogPilot variables
|
|
Params params;
|
|
|
|
private slots:
|
|
void handleRpcRequest();
|
|
};
|