Bench mode (--bench flag): - bench_onroad.py publishes fake vehicle state as managed process - manager blocks real car processes (pandad, thermald, controlsd, etc.) - bench_cmd.py for setting params and querying UI state - BLOCKER: UI segfaults (SIGSEGV) when OnroadWindow becomes visible without camera frames — need to make CameraWidget handle missing VisionIPC gracefully before bench drive mode works ClearPilot menu: - Replaced grid launcher with sidebar settings panel (ClearPilotPanel) - Sidebar: Home, Dashcam, Debug - Home panel: Status and System Settings buttons - Debug panel: telemetry logging toggle (ParamControl) - Tap from any view (splash, onroad) opens ClearPilotPanel - Back button returns to splash/onroad Status window: - Live system stats refreshing every 1 second - Storage, RAM, load, IP, WiFi, VPN, GPS, time, telemetry status - Tap anywhere to close, returns to previous view - Honors interactive timeout UI introspection RPC: - ZMQ REP server at ipc:///tmp/clearpilot_ui_rpc - Dumps full widget tree with visibility, geometry, stacked indices - bench_cmd dump queries it, detects crash loops via process uptime - ui_dump.py standalone tool Other: - Telemetry toggle wired to TelemetryEnabled param with disk space guard - Telemetry disabled on every manager start - Blinking red circle on onroad UI when telemetry recording - Fixed showDriverView overriding park/drive transitions every frame - Fixed offroadTransition sidebar visibility race in MainWindow - launch_openpilot.sh: cd to /data/openpilot, --bench flag support Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
75 lines
1.6 KiB
C++
Executable File
75 lines
1.6 KiB
C++
Executable File
#pragma once
|
|
|
|
#include <QFrame>
|
|
#include <QLabel>
|
|
#include <QPushButton>
|
|
#include <QStackedLayout>
|
|
#include <QStackedWidget>
|
|
#include <QTimer>
|
|
#include <QWidget>
|
|
|
|
#include "common/params.h"
|
|
#include "selfdrive/ui/qt/offroad/driverview.h"
|
|
#include "selfdrive/ui/qt/ready.h"
|
|
#include "selfdrive/ui/qt/onroad.h"
|
|
#include "selfdrive/ui/qt/sidebar.h"
|
|
#include "selfdrive/ui/qt/widgets/controls.h"
|
|
#include "selfdrive/ui/qt/widgets/offroad_alerts.h"
|
|
#include "selfdrive/ui/ui.h"
|
|
|
|
class ClearPilotPanel : public QFrame {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit ClearPilotPanel(QWidget* parent = 0);
|
|
|
|
signals:
|
|
void openSettings(int index = 0, const QString ¶m = "");
|
|
void openStatus();
|
|
void closePanel();
|
|
|
|
private:
|
|
QStackedWidget *panel_widget;
|
|
};
|
|
|
|
class HomeWindow : public QWidget {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit HomeWindow(QWidget* parent = 0);
|
|
QWidget* _parent = 0;
|
|
|
|
signals:
|
|
void openSettings(int index = 0, const QString ¶m = "");
|
|
void openStatus();
|
|
void closeSettings();
|
|
|
|
public slots:
|
|
void offroadTransition(bool offroad);
|
|
void showDriverView(bool show, bool started=false);
|
|
void showOnroad();
|
|
void showSidebar(bool show);
|
|
|
|
protected:
|
|
void mousePressEvent(QMouseEvent* e) override;
|
|
void mouseDoubleClickEvent(QMouseEvent* e) override;
|
|
|
|
private:
|
|
Sidebar *sidebar;
|
|
ClearPilotPanel *home;
|
|
OnroadWindow *onroad;
|
|
DriverViewWindow *driver_view;
|
|
QStackedLayout *slayout;
|
|
|
|
// FrogPilot variables
|
|
Params params;
|
|
Params paramsMemory{"/dev/shm/params"};
|
|
|
|
// CLEARPILOT
|
|
ReadyWindow *ready;
|
|
bool was_parked_onroad = false;
|
|
|
|
private slots:
|
|
void updateState(const UIState &s);
|
|
};
|