Files
openpilot-evo/tools/cabana/cabana.cc
T
Dean Lee 773024cc93 Cabana: support multiple instances (#26286)
* multiple instance

* new file qtuitl.h

* Revert "new file qtuitl.h"

This reverts commit 19ef28945e8647724bbfc6c8469a664a58c09f16.
old-commit-hash: 57ad0c94586d12df54d5ab4a65d0e47945a35065
2022-12-06 21:17:37 -08:00

44 lines
1.3 KiB
C++

#include <QApplication>
#include <QDir>
#include <QCommandLineParser>
#include <QUuid>
#include "selfdrive/ui/qt/util.h"
#include "tools/cabana/mainwin.h"
int main(int argc, char *argv[]) {
initApp(argc, argv);
QApplication app(argc, argv);
QCommandLineParser cmd_parser;
cmd_parser.addHelpOption();
cmd_parser.addPositionalArgument("route", "the drive to replay. find your drives at connect.comma.ai");
cmd_parser.addOption({"demo", "use a demo route instead of providing your own"});
cmd_parser.addOption({"qcam", "load qcamera"});
cmd_parser.addOption({"data_dir", "local directory with routes", "data_dir"});
cmd_parser.process(app);
const QStringList args = cmd_parser.positionalArguments();
if (args.empty() && !cmd_parser.isSet("demo")) {
cmd_parser.showHelp();
}
QString uuid = QUuid::createUuid().toString(QUuid::WithoutBraces);
QString msgq_path = "/dev/shm/" + uuid;
QDir dir;
dir.mkdir(msgq_path);
setenv("OPENPILOT_PREFIX", qPrintable(uuid), 1);
int ret = 0;
const QString route = args.empty() ? DEMO_ROUTE : args.first();
CANMessages p(&app);
if (p.loadRoute(route, cmd_parser.value("data_dir"), cmd_parser.isSet("qcam"))) {
MainWindow w;
w.showMaximized();
ret = app.exec();
}
dir.rmdir(msgq_path);
return ret;
}