From 224327480a88175423a40b270ce0945460ec30dd Mon Sep 17 00:00:00 2001 From: concordia Date: Sun, 28 Apr 2024 03:24:23 -0500 Subject: [PATCH] wip --- selfdrive/ui/SConscript | 3 + .../{dependencies.sh => provision.sh} | 0 system/clearpilot/tools/qt_shell | Bin 0 -> 309112 bytes system/clearpilot/tools/qt_shell.cc | 76 ++ system/clearpilot/tools/shell.sh | 2 +- system/clearpilot/tools_wip_4_28/QConsole.cc | 785 ++++++++++++++++++ system/clearpilot/tools_wip_4_28/QConsole.h | 211 +++++ .../RotationModule.egg-info/PKG-INFO | 10 + .../RotationModule.egg-info/SOURCES.txt | 6 + .../dependency_links.txt | 1 + .../RotationModule.egg-info/top_level.txt | 1 + system/clearpilot/tools_wip_4_28/decrypt | 17 + system/clearpilot/tools_wip_4_28/encrypt | 17 + system/clearpilot/tools_wip_4_28/faketty.py | 81 ++ system/clearpilot/tools_wip_4_28/moc_test2.cc | 188 +++++ system/clearpilot/tools_wip_4_28/provision.sh | 41 + .../clearpilot/tools_wip_4_28/remount_ro.sh | 1 + .../clearpilot/tools_wip_4_28/remount_rw.sh | 1 + .../tools_wip_4_28/rotation_module.cpp | 33 + .../tools_wip_4_28/rotation_module.sip | 19 + .../tools_wip_4_28/rotation_module_build.py | 32 + .../tools_wip_4_28/rotation_module_build.sh | 2 + system/clearpilot/tools_wip_4_28/scrun | 37 + system/clearpilot/tools_wip_4_28/shell.py | 90 ++ system/clearpilot/tools_wip_4_28/shell.sh | 1 + system/clearpilot/tools_wip_4_28/test.c | 28 + system/clearpilot/tools_wip_4_28/test2 | Bin 0 -> 440816 bytes system/clearpilot/tools_wip_4_28/test2.cc | 62 ++ system/clearpilot/tools_wip_4_28/test2.h | 10 + system/clearpilot/tools_wip_4_28/test3.cc | 120 +++ system/clearpilot/tools_wip_4_28/test3.h | 37 + system/clearpilot/tools_wip_4_28/test4.cc | 64 ++ system/clearpilot/tools_wip_4_28/webview.py | 66 ++ system/clearpilot/tools_wip_4_28/webview.sh | 1 + system/clearpilot/tools_wip_4_28/webview2.py | 75 ++ 35 files changed, 2117 insertions(+), 1 deletion(-) rename system/clearpilot/configure/{dependencies.sh => provision.sh} (100%) create mode 100755 system/clearpilot/tools/qt_shell create mode 100644 system/clearpilot/tools/qt_shell.cc create mode 100644 system/clearpilot/tools_wip_4_28/QConsole.cc create mode 100644 system/clearpilot/tools_wip_4_28/QConsole.h create mode 100644 system/clearpilot/tools_wip_4_28/RotationModule.egg-info/PKG-INFO create mode 100644 system/clearpilot/tools_wip_4_28/RotationModule.egg-info/SOURCES.txt create mode 100644 system/clearpilot/tools_wip_4_28/RotationModule.egg-info/dependency_links.txt create mode 100644 system/clearpilot/tools_wip_4_28/RotationModule.egg-info/top_level.txt create mode 100644 system/clearpilot/tools_wip_4_28/decrypt create mode 100644 system/clearpilot/tools_wip_4_28/encrypt create mode 100644 system/clearpilot/tools_wip_4_28/faketty.py create mode 100644 system/clearpilot/tools_wip_4_28/moc_test2.cc create mode 100644 system/clearpilot/tools_wip_4_28/provision.sh create mode 100644 system/clearpilot/tools_wip_4_28/remount_ro.sh create mode 100644 system/clearpilot/tools_wip_4_28/remount_rw.sh create mode 100644 system/clearpilot/tools_wip_4_28/rotation_module.cpp create mode 100644 system/clearpilot/tools_wip_4_28/rotation_module.sip create mode 100644 system/clearpilot/tools_wip_4_28/rotation_module_build.py create mode 100644 system/clearpilot/tools_wip_4_28/rotation_module_build.sh create mode 100644 system/clearpilot/tools_wip_4_28/scrun create mode 100644 system/clearpilot/tools_wip_4_28/shell.py create mode 100644 system/clearpilot/tools_wip_4_28/shell.sh create mode 100644 system/clearpilot/tools_wip_4_28/test.c create mode 100755 system/clearpilot/tools_wip_4_28/test2 create mode 100644 system/clearpilot/tools_wip_4_28/test2.cc create mode 100644 system/clearpilot/tools_wip_4_28/test2.h create mode 100644 system/clearpilot/tools_wip_4_28/test3.cc create mode 100644 system/clearpilot/tools_wip_4_28/test3.h create mode 100644 system/clearpilot/tools_wip_4_28/test4.cc create mode 100644 system/clearpilot/tools_wip_4_28/webview.py create mode 100644 system/clearpilot/tools_wip_4_28/webview.sh create mode 100644 system/clearpilot/tools_wip_4_28/webview2.py diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index 1e6f8f6..d593566 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -79,6 +79,9 @@ qt_env.SharedLibrary("qt/python_helpers", ["qt/qt_window.cc"], LIBS=qt_libs) qt_env.Program("_text", ["qt/text.cc"], LIBS=qt_libs) qt_env.Program("_spinner", ["qt/spinner.cc"], LIBS=qt_libs) +# Clearpilot tools +qt_env.Program("/data/openpilot/system/clearpilot/tools/qt_shell", ["/data/openpilot/system/clearpilot/tools/qt_shell.cc"], LIBS=qt_libs) + # build main UI qt_env.Program("ui", qt_src + [asset_obj], LIBS=qt_libs) if GetOption('extras'): diff --git a/system/clearpilot/configure/dependencies.sh b/system/clearpilot/configure/provision.sh similarity index 100% rename from system/clearpilot/configure/dependencies.sh rename to system/clearpilot/configure/provision.sh diff --git a/system/clearpilot/tools/qt_shell b/system/clearpilot/tools/qt_shell new file mode 100755 index 0000000000000000000000000000000000000000..1b3f882839a1e989e9737dc4c015af164ab1253d GIT binary patch literal 309112 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 L>0OJ!dUXDO=2XSH literal 0 HcmV?d00001 diff --git a/system/clearpilot/tools/qt_shell.cc b/system/clearpilot/tools/qt_shell.cc new file mode 100644 index 0000000..6c79f83 --- /dev/null +++ b/system/clearpilot/tools/qt_shell.cc @@ -0,0 +1,76 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +int main(int argc, char *argv[]) { + QApplication app(argc, argv); + + if (argc < 2) { + printf("Usage: %s ''\n", argv[0]); + return 1; + } + + QWidget window; + window.setWindowTitle("Shell Command Output Viewer"); + window.setStyleSheet("background-color: black;"); + window.showFullScreen(); + + auto windowHandle = window.windowHandle(); + if (!windowHandle) { + fprintf(stderr, "Error: Unable to obtain window handle.\n"); + return 1; + } + + QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); + auto *s = static_cast(native->nativeResourceForWindow("surface", windowHandle)); + if (!s) { + fprintf(stderr, "Error: Unable to obtain native Wayland surface.\n"); + return 1; + } + + wl_surface_set_buffer_transform(s, WL_OUTPUT_TRANSFORM_270); + wl_surface_commit(s); + + window.setFixedSize(2160, 1080); + + QVBoxLayout *layout = new QVBoxLayout(&window); + QTextEdit *outputDisplay = new QTextEdit; + outputDisplay->setFont(QFont("Consolas", 32)); + outputDisplay->setReadOnly(true); + outputDisplay->setFixedSize(2160, 1080); + outputDisplay->setStyleSheet("color: white; background-color: black;"); + outputDisplay->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // Hide the vertical scrollbar + + layout->addWidget(outputDisplay); + + QProcess process; + QObject::connect(&process, &QProcess::readyReadStandardOutput, [&]() { + static QStringList lines; + QString output = process.readAllStandardOutput(); + lines += output.split("\n", QString::SkipEmptyParts); + while (lines.size() > 100) { + lines.removeFirst(); + } + outputDisplay->setPlainText(lines.join("\n")); + outputDisplay->verticalScrollBar()->setValue(outputDisplay->verticalScrollBar()->maximum()); + }); + + QObject::connect(&process, QOverload::of(&QProcess::finished), [&]() { + app.quit(); + }); + + QString command = argv[1]; + process.start(QString("bash -c \"%1\"").arg(command)); + + return app.exec(); +} \ No newline at end of file diff --git a/system/clearpilot/tools/shell.sh b/system/clearpilot/tools/shell.sh index bf50aa4..555345a 100644 --- a/system/clearpilot/tools/shell.sh +++ b/system/clearpilot/tools/shell.sh @@ -1 +1 @@ -sudo su comma -c "python3 shell.py \"echo hello; sleep 5\" +sudo su comma -c "python3 /data/openpilot/system/clearpilot/tools/shell.py \"echo hello; sleep 5\" diff --git a/system/clearpilot/tools_wip_4_28/QConsole.cc b/system/clearpilot/tools_wip_4_28/QConsole.cc new file mode 100644 index 0000000..cf441db --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/QConsole.cc @@ -0,0 +1,785 @@ +/** + Change log: + (C) 2005 by Houssem BDIOUI + (C) 2010 by YoungTaek Oh. (migrated to Qt4) + (C) 2014-2015 Igor Malinovskiy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. +*/ + +// #include "qconsole.h" +#include +#include +#include +#include +#include +#include +#include + +//#define USE_POPUP_COMPLETER +#define WRITE_ONLY QIODevice::WriteOnly + +QSize PopupListWidget::sizeHint() const +{ + QAbstractItemModel *model = this->model(); + QAbstractItemDelegate *delegate = this->itemDelegate(); + const QStyleOptionViewItem sovi; + int left, top, right, bottom = 0; + + QMargins margin = this->contentsMargins(); + + top = margin.top(); + bottom = margin.bottom(); + left = margin.left(); + right = margin.right(); + + const int vOffset = top + bottom; + const int hOffset = left + right; + + bool vScrollOn = false; + int height = 0; + int width = 0; + for (int i=0; icount(); ++i) { + QModelIndex index = model->index(i, 0); + QSize itemSizeHint = delegate->sizeHint(sovi, index); + if (itemSizeHint.width() > width) + width = itemSizeHint.width(); + + // height + const int nextHeight = height + itemSizeHint.height(); + if (nextHeight + vOffset < this->maximumHeight()) + height = nextHeight; + else { + // early termination + vScrollOn = true; + break; + } + } + + QSize sizeHint(width + hOffset, 0); + sizeHint.setHeight(height + vOffset); + if (vScrollOn) { + int scrollWidth = this->verticalScrollBar()->sizeHint().width(); + sizeHint.setWidth(sizeHint.width() + scrollWidth); + } + return sizeHint; +} + +void PopupListWidget::keyPressEvent(QKeyEvent *e) { + if (e->key() == Qt::Key_Tab || + e->key() == Qt::Key_Return) + Q_EMIT itemActivated(currentItem()); + else + QListWidget::keyPressEvent(e); +} + +PopupCompleter::PopupCompleter(const QStringList& sl, QWidget *parent) + : QDialog(parent, Qt::Popup) +{ + setModal(true); + + listWidget_ = new PopupListWidget(); + listWidget_->setMaximumHeight(200); + qDebug() << "sizeHint(): " << listWidget_->sizeHint(); + Q_FOREACH(QString str, sl) { + QListWidgetItem *item = new QListWidgetItem; + item->setText(str); + listWidget_->addItem(item); + } + qDebug() << "sizeHint(): " << listWidget_->sizeHint(); + listWidget_->setFixedSize(listWidget_->sizeHint()); + + + QLayout *layout = new QVBoxLayout(); + layout->setSizeConstraint(QLayout::SetFixedSize); + layout->setContentsMargins(0, 0, 0, 0); + layout->addWidget(listWidget_); + + setLayout(layout); + + // connect signal + connect(listWidget_, SIGNAL(itemActivated(QListWidgetItem *)), + SLOT(onItemActivated(QListWidgetItem*))); +} + +PopupCompleter::~PopupCompleter() +{ +} + +void PopupCompleter::showEvent(QShowEvent *event) +{ + listWidget_->setFocus(); +} + +void PopupCompleter::onItemActivated(QListWidgetItem *event) +{ + selected_ = event->text(); + done(QDialog::Accepted); +} + +/** + * @brief execute PopupCompleter at appropriate position. + * + * @param parent Parent of this popup completer. usually QConsole. + * @return see QDialog::exec + * @see QDialog::exec + */ +int PopupCompleter::exec(QTextEdit *parent) +{ + QSize popupSizeHint = this->sizeHint(); + QRect cursorRect = parent->cursorRect(); + QPoint globalPt = parent->mapToGlobal(cursorRect.bottomRight()); + QDesktopWidget *dsk = QApplication::desktop(); + QRect screenGeom = dsk->screenGeometry(dsk->screenNumber(this)); + if (globalPt.y() + popupSizeHint.height() > screenGeom.height()) { + globalPt = parent->mapToGlobal(cursorRect.topRight()); + globalPt.setY(globalPt.y() - popupSizeHint.height()); + } + this->move(globalPt); + this->setFocus(); + return QDialog::exec(); +} + +/** + * returns a common word of the given list + * + * @param list String list + * + * @return common word in the given string. + */ +static +QString getCommonWord(QStringList& list) +{ + QChar ch; + QVector strarray = list.toVector(); + QString common; + int col = 0, min_len; + bool cont = true; + + // get minimum length + min_len = strarray.at(0).size(); + for (int i=1; iexec(this) == QDialog::Accepted) + replaceCurrentCommand(commandPrefix + popup->selected()); + delete popup; + + } + } +} + +// If return pressed, do the evaluation and append the result +void QConsole::handleReturnKeyPress() +{ + //Get the command to validate + QString command = getCurrentCommand(); + //execute the command and get back its text result and its return value + if (isCommandComplete(command)) + pExecCommand(command); + else + { + append(""); + moveCursor(QTextCursor::EndOfLine); + } +} + +bool QConsole::handleBackspaceKeyPress() +{ + QTextCursor cur = textCursor(); + const int col = cur.columnNumber(); + const int blk = cur.blockNumber(); + if (blk == promptParagraph && col == promptLength) + return true; + return false; +} + +void QConsole::handleUpKeyPress() +{ + if (history.count()) + { + QString command = getCurrentCommand(); + do + { + if (historyIndex) + historyIndex--; + else + { + break; + } + } while(history[historyIndex] == command); + replaceCurrentCommand(history[historyIndex]); + } +} + +void QConsole::handleDownKeyPress() +{ + if (history.count()) + { + QString command = getCurrentCommand(); + do + { + if (++historyIndex >= history.size()) + { + historyIndex = history.size() - 1; + break; + } + } while(history[historyIndex] == command); + replaceCurrentCommand(history[historyIndex]); + } +} + + +void QConsole::setHome(bool select) +{ + QTextCursor cursor = textCursor(); + cursor.movePosition(QTextCursor::StartOfBlock, select ? QTextCursor::KeepAnchor : + QTextCursor::MoveAnchor); + if(textCursor().blockNumber() == promptParagraph) + { + cursor.movePosition(QTextCursor::Right, select ? QTextCursor::KeepAnchor : + QTextCursor::MoveAnchor, + promptLength); + } + setTextCursor(cursor); +} + +//Reimplemented key press event +void QConsole::keyPressEvent( QKeyEvent *e ) +{ + if (isLocked) + return; + + //If the user wants to copy or cut outside + //the editing area we perform a copy + if(textCursor().hasSelection()) + { + if(e->modifiers() == Qt::CTRL) + { + if( e->matches(QKeySequence::Cut) ) + { + e->accept(); + if(!isInEditionZone()) + { + copy(); + } + else + { + cut(); + } + return; + } + else if(e->matches(QKeySequence::Copy) ) + { + e->accept(); + copy(); + } + else + { + QTextEdit::keyPressEvent( e ); + return; + } + } + } + /* + // if the cursor out of editing zone put it back first + if(!isInEditionZone()) + { + QTextCursor editCursor = textCursor(); + editCursor.setPosition(oldEditPosition); + setTextCursor(editCursor); + } +*/ + // control is pressed + if ( (e->modifiers() & Qt::ControlModifier) && (e->key() == Qt::Key_C) ) + { + if ( isSelectionInEditionZone()) + { + //If Ctrl + C pressed, then undo the current commant + //append(""); + //displayPrompt(); + + //(Thierry Belair:)I humbly suggest that ctrl+C copies the text, as is expected, + //and indicated in the contextual menu + copy(); + return; + } + + } + else { + switch (e->key()) { + case Qt::Key_Tab: + if(isSelectionInEditionZone()) + { + handleTabKeyPress(); + } + return; + + case Qt::Key_Enter: + case Qt::Key_Return: + if (isSelectionInEditionZone()) + { + handleReturnKeyPress(); + } + // ignore return key + return; + + case Qt::Key_Backspace: + if (handleBackspaceKeyPress() || !isSelectionInEditionZone()) + return; + break; + + case Qt::Key_Home: + setHome(e->modifiers() & Qt::ShiftModifier); + case Qt::Key_Down: + if (isInEditionZone()) + { + handleDownKeyPress(); + } + return; + case Qt::Key_Up: + if (isInEditionZone()) + { + handleUpKeyPress(); + } + return; + + //Default behaviour + case Qt::Key_End: + case Qt::Key_Left: + case Qt::Key_Right: + break; + + default: + if (textCursor().hasSelection() ) { + if (!isSelectionInEditionZone()) + { + moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); + } + break; + } + else + { //no selection + //when typing normal characters, + //make sure the cursor is positionned in the + //edition zone + if ( !isInEditionZone() ) + { + moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); + } + } + } //end of switch + } //end of else : no control pressed + + QTextEdit::keyPressEvent( e ); +} + +//Get the current command +QString QConsole::getCurrentCommand() +{ + QTextCursor cursor = textCursor(); //Get the current command: we just remove the prompt + cursor.movePosition(QTextCursor::StartOfBlock); + cursor.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, promptLength); + cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); + QString command = cursor.selectedText(); + cursor.clearSelection(); + return command; +} + +//Replace current command with a new one +void QConsole::replaceCurrentCommand(const QString &newCommand) +{ + QTextCursor cursor = textCursor(); + cursor.movePosition(QTextCursor::StartOfLine); + cursor.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, promptLength); + cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); + cursor.insertText(newCommand); +} + +//default implementation: command always complete +bool QConsole::isCommandComplete(const QString &) +{ + return true; +} + +//Tests whether the cursor is in th edition zone or not (after the prompt +//or in the next lines (in case of multi-line mode) +bool QConsole::isInEditionZone() +{ + const int para = textCursor().blockNumber(); + const int index = textCursor().columnNumber(); + return (para > promptParagraph) || ( (para == promptParagraph) && (index >= promptLength) ); +} + + +//Tests whether position (in parameter) is in the edition zone or not (after the prompt +//or in the next lines (in case of multi-line mode) +bool QConsole::isInEditionZone(const int& pos) +{ + QTextCursor cur = textCursor(); + cur.setPosition(pos); + const int para = cur.blockNumber(); + const int index = cur.columnNumber(); + return (para > promptParagraph) || ( (para == promptParagraph) && (index >= promptLength) ); +} + + +//Tests whether the current selection is in th edition zone or not +bool QConsole::isSelectionInEditionZone() +{ + QTextCursor cursor(document()); + int range[2]; + + range[0] = textCursor().selectionStart(); + range[1] = textCursor().selectionEnd(); + for (int i = 0; i < 2; i++) + { + cursor.setPosition(range[i]); + int para = cursor.blockNumber(); + int index = cursor.columnNumber(); + if ((para <= promptParagraph) && ( (para != promptParagraph) || (index < promptLength) )) + { + return false; + } + } + return true; +} + + +//Basically, puts the command into the history list +//And emits a signal (should be called by reimplementations) +QString QConsole::addCommandToHistory(const QString &command) +{ + //Add the command to the recordedScript list + recordedScript.append(command); + //update the history and its index + QString modifiedCommand = command; + modifiedCommand.replace("\n", "\\n"); + history.append(modifiedCommand); + historyIndex = history.size(); + //emit the commandExecuted signal + Q_EMIT commandAddedToHistory(modifiedCommand); + return ""; +} + +//pExecCommand(QString) executes the command and displays back its result +void QConsole::pExecCommand(const QString &command) +{ + isLocked = true; + + addCommandToHistory(command); + + emit execCommand(command); +} + +void QConsole::printCommandExecutionResults(const QString &result, ResultType type) +{ + //According to the return value, display the result either in red or in blue + if (type == ResultType::Error) + setTextColor(errColor_); + else + setTextColor(outColor_); + + append(result); + + //Display the prompt again + if (type == ResultType::Complete || type == ResultType::Error) { + if (!result.endsWith("\n")) + append("\n"); + + isLocked = false; + displayPrompt(); + } + + moveCursor(QTextCursor::End); +} + + + +//Change paste behaviour +void QConsole::insertFromMimeData(const QMimeData *source) +{ + if (isSelectionInEditionZone()) + { + QTextEdit::insertFromMimeData(source); + } +} + +//Implement paste with middle mouse button +void QConsole::mousePressEvent(QMouseEvent* event) +{ + oldPosition = textCursor().position(); + if (event->button() == Qt::MidButton) + { + copy(); + QTextCursor cursor = cursorForPosition(event->pos()); + setTextCursor(cursor); + paste(); + return; + } + + QTextEdit::mousePressEvent(event); +} + + +//Redefinition of the dropEvent to have a copy paste +//instead of a cut paste when copying out of the +//editable zone +void QConsole::dropEvent ( QDropEvent * event) +{ + if(!isInEditionZone()) + { + //Execute un drop a drop at the old position + //if the drag started out of the editable zone + QTextCursor cur = textCursor(); + cur.setPosition(oldPosition); + setTextCursor(cur); + } + //Execute a normal drop + QTextEdit::dropEvent(event); +} + + + +void QConsole::dragMoveEvent( QDragMoveEvent * event) +{ + //Get a cursor for the actual mouse position + QTextCursor cur = textCursor(); + cur.setPosition(cursorForPosition(event->pos()).position()); + + if(!isInEditionZone(cursorForPosition(event->pos()).position())) + { + //Ignore the event if out of the editable zone + event->ignore(cursorRect(cur)); + } + else + { + //Accept the event if out of the editable zone + event->accept(cursorRect(cur)); + } +} + + +void QConsole::contextMenuEvent ( QContextMenuEvent * event) +{ + if (isLocked) + return; + + QMenu *menu = new QMenu(this); + + QAction *undo = new QAction(tr("Undo"), this); + undo->setShortcut(tr("Ctrl+Z")); + QAction *redo = new QAction(tr("Redo"), this); + redo->setShortcut(tr("Ctrl+Y")); + QAction *cut = new QAction(tr("Cut"), this); + cut->setShortcut(tr("Ctrl+X")); + QAction *copy = new QAction(tr("Copy"), this); + copy->setShortcut(tr("Ctrl+Ins")); + QAction *paste = new QAction(tr("Paste"), this); + paste->setShortcut(tr("Ctrl+V")); + QAction *del = new QAction(tr("Delete"), this); + del->setShortcut(tr("Del")); + QAction *selectAll = new QAction(tr("Select All"), this); + selectAll->setShortcut(tr("Ctrl+A")); + + menu->addAction(undo); + menu->addAction(redo); + menu->addSeparator(); + menu->addAction(cut); + menu->addAction(copy); + menu->addAction(paste); + menu->addAction(del); + menu->addSeparator(); + menu->addAction(selectAll); + + connect(undo, SIGNAL(triggered()), this, SLOT(undo())); + connect(redo, SIGNAL(triggered()), this, SLOT(redo())); + connect(cut, SIGNAL(triggered()), this, SLOT(cut())); + connect(copy, SIGNAL(triggered()), this, SLOT(copy())); + connect(paste, SIGNAL(triggered()), this, SLOT(paste())); + connect(del, SIGNAL(triggered()), this, SLOT(del())); + connect(selectAll, SIGNAL(triggered()), this, SLOT(selectAll())); + + + menu->exec(event->globalPos()); + + delete menu; +} + +void QConsole::cut() +{ + //Cut only in the editing zone, + //perfom a copy otherwise + if(isSelectionInEditionZone()) + { + QTextEdit::cut(); + return; + } + + QTextEdit::copy(); +} + +/* +//Allows pasting with middle mouse button (x window) +//when clicking outside of the edition zone +void QConsole::paste() +{ + restoreOldPosition(); + QTextEdit::paste(); +} +*/ + +void QConsole::del() +{ + //Delete only in the editing zone + if(isInEditionZone()) + { + textCursor().movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); + textCursor().deleteChar(); + } +} + +void QConsole::correctPathName(QString& pathName) +{ + if(pathName.contains(tr(":\\"))) + { + pathName.replace('\\', tr("/")); + } +} diff --git a/system/clearpilot/tools_wip_4_28/QConsole.h b/system/clearpilot/tools_wip_4_28/QConsole.h new file mode 100644 index 0000000..fedf736 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/QConsole.h @@ -0,0 +1,211 @@ +/** + Change log: + (C) 2005 by Houssem BDIOUI + (C) 2010 by YoungTaek Oh. (migrated to Qt4) + (C) 2014-2015 Igor Malinovskiy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. +*/ + +#pragma once + +#include +#include +#include +#include +#include + +#include +#include +#include + + +/** + * Subclasssing QListWidget + * + * @author YoungTaek Oh + */ +class PopupListWidget : public QListWidget +{ + Q_OBJECT + +public: + PopupListWidget(QWidget *parent = 0): QListWidget(parent) { + setUniformItemSizes(true); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + } + virtual ~PopupListWidget() { } + +protected: + virtual QSize sizeHint() const; + virtual void keyPressEvent(QKeyEvent *e); +}; + +/** + * Popup Completer class + * + * @author YoungTaek Oh + * @todo 1. beautifying + * 2. icons for classifying words (eg. functions, properties...) + * 3. bugs? + * @note still experimental + */ +class PopupCompleter : public QDialog +{ + Q_OBJECT + +public: + PopupCompleter(const QStringList&, QWidget *parent = 0); + virtual ~PopupCompleter(); + +public: + QString selected(void) { return selected_; } + int exec(QTextEdit*); + +protected: + virtual void showEvent(QShowEvent*); + +private Q_SLOTS: + void onItemActivated(QListWidgetItem*); + +public: + QListWidget *listWidget_; + QString selected_; +}; + +/** + * An abstract Qt console + * @author Houssem BDIOUI + */ +class QConsole : public QTextEdit +{ + Q_OBJECT +public: + //constructor + QConsole(QWidget *parent = NULL, const QString &welcomeText = ""); + //set the prompt of the console + void setPrompt(const QString &prompt, bool display = true); + + //clear & reset the console (useful sometimes) + void clear(); + void reset(const QString &welcomeText = ""); + + //cosmetic methods ! + + // @{ + /// get/set command color + QColor cmdColor() const { return cmdColor_; } + void setCmdColor(QColor c) {cmdColor_ = c;} + // @} + + // @{ + /// get/set error color + QColor errColor() const { return errColor_; } + void setErrColor(QColor c) {errColor_ = c;} + // @} + + // @{ + /// get/set output color + QColor outColor() const { return outColor_; } + void setOutColor(QColor c) {outColor_ = c;} + // @} + void setCompletionColor(QColor c) {completionColor = c;} + + // @{ + /// get set font + void setFont(const QFont& f); + QFont font() const { return currentFont(); } + // @} + + void correctPathName(QString& pathName); + + enum ResultType {Error, Partial, Complete}; + +private: + void dropEvent( QDropEvent * event); + void dragMoveEvent( QDragMoveEvent * event); + + void keyPressEvent(QKeyEvent * e); + void contextMenuEvent( QContextMenuEvent * event); + + //Return false if the command is incomplete (e.g. unmatched braces) + virtual bool isCommandComplete(const QString &command); + //Get the command to validate + QString getCurrentCommand(); + + //Replace current command with a new one + void replaceCurrentCommand(const QString &newCommand); + + //Test whether the cursor is in the edition zone + bool isInEditionZone(); + bool isInEditionZone(const int& pos); + + //Test whether the selection is in the edition zone + bool isSelectionInEditionZone(); + //Change paste behaviour + void insertFromMimeData(const QMimeData *); + +protected: + //colors + QColor cmdColor_, errColor_, outColor_, completionColor; + + int oldPosition; + // cached prompt length + int promptLength; + // The prompt string + QString prompt; + // The commands history + QStringList history; + //Contains the commands that has succeeded + QStringList recordedScript; + // Current history index (needed because afaik QStringList does not have such an index) + int historyIndex; + //Holds the paragraph number of the prompt (useful for multi-line command handling) + int promptParagraph; + +protected: + //Implement paste with middle mouse button + void mousePressEvent(QMouseEvent*); + + //execute a validated command (should be reimplemented and called at the end) + //the return value of the function is the string result + //res must hold back the return value of the command (0: passed; else: error) + virtual QString addCommandToHistory(const QString &command); + + //give suggestions to autocomplete a command (should be reimplemented) + //the return value of the function is the string list of all suggestions + //the returned prefix is useful to complete "sub-commands" + virtual QStringList suggestCommand(const QString &cmd, QString &prefix); + + +public slots: + //Contextual menu slots + void cut(); + //void paste(); + void del(); + //displays the prompt + void displayPrompt(); + + void printCommandExecutionResults(const QString &, ResultType t = ResultType::Complete); + +signals: + //Signal emitted after that a command is executed + void commandAddedToHistory(const QString &command); + void execCommand(const QString &command); + +private: + bool isLocked; + + void handleTabKeyPress(); + void handleReturnKeyPress(); + bool handleBackspaceKeyPress(); + void handleUpKeyPress(); + void handleDownKeyPress(); + void setHome(bool); + void pExecCommand(const QString &command); +}; + +#include "QConsole.cc" diff --git a/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/PKG-INFO b/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/PKG-INFO new file mode 100644 index 0000000..8d80e20 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/PKG-INFO @@ -0,0 +1,10 @@ +Metadata-Version: 1.0 +Name: RotationModule +Version: 1.0 +Summary: Module for rotating display via native interface +Home-page: UNKNOWN +Author: UNKNOWN +Author-email: UNKNOWN +License: UNKNOWN +Description: UNKNOWN +Platform: UNKNOWN diff --git a/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/SOURCES.txt b/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/SOURCES.txt new file mode 100644 index 0000000..ebac1c3 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/SOURCES.txt @@ -0,0 +1,6 @@ +rotation_module.cc +rotation_module_build.py +RotationModule.egg-info/PKG-INFO +RotationModule.egg-info/SOURCES.txt +RotationModule.egg-info/dependency_links.txt +RotationModule.egg-info/top_level.txt \ No newline at end of file diff --git a/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/dependency_links.txt b/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/top_level.txt b/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/top_level.txt new file mode 100644 index 0000000..ddccd9e --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/RotationModule.egg-info/top_level.txt @@ -0,0 +1 @@ +rotation diff --git a/system/clearpilot/tools_wip_4_28/decrypt b/system/clearpilot/tools_wip_4_28/decrypt new file mode 100644 index 0000000..a736b82 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/decrypt @@ -0,0 +1,17 @@ +#!/bin/bash + +# Check for the correct number of arguments +if [ "$#" -ne 2 ]; then + echo "Usage: $0 source destination" + exit 1 +fi + +# Set variables for source and destination +src="$1" +dest="$2" + +# Read DongleId for decryption key +dongle_id=/data/params/d/DongleId + +# Decrypt the file +cat "$src" | ccrypt -d -k "$dongle_id" > "$dest" diff --git a/system/clearpilot/tools_wip_4_28/encrypt b/system/clearpilot/tools_wip_4_28/encrypt new file mode 100644 index 0000000..9496892 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/encrypt @@ -0,0 +1,17 @@ +#!/bin/bash + +# Check for the correct number of arguments +if [ "$#" -ne 2 ]; then + echo "Usage: $0 source destination" + exit 1 +fi + +# Set variables for source and destination +src="$1" +dest="$2" + +# Read DongleId for encryption key +dongle_id=/data/params/d/DongleId + +# Encrypt the file +cat "$src" | ccrypt -e -k "$dongle_id" > "$dest" diff --git a/system/clearpilot/tools_wip_4_28/faketty.py b/system/clearpilot/tools_wip_4_28/faketty.py new file mode 100644 index 0000000..51a9a94 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/faketty.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python + +from sys import argv +import os +import signal + +# I've had problems with python's File objects at this low a level, so +# we're going to use integers to specify all files in this script. +stdin = 0 +stdout = 1 +stderr = 2 +# Include this if passing the command and arguments to fish to +# prevent fish from applying any expansions. +#import re +#def fish_escape(args): +# def escape_one(arg): +# return "'" + re.sub(r"('|\\)", r'\\\1', arg) + "'" +# escaped_args = map(escape_one, args) +# return ' '.join(escaped_args) + +if len(argv) < 2: + os.write(stderr, +b"""A tragically beautiful piece of hackery, made to fool programs like ls, +grep, rg, and fd into thinking they're actually connected to a terminal. +Its usage: + +pty command [arg1 arg2 ...] + +Examples: +pty ls --color -R | less -r +git log -p | pty rg | less -r +""") + exit(255) + +# We do not use forkpty here because it would block ^Cs from reaching the +# child process. And we don't need that. +ptm, pts = os.openpty() +pid = os.fork() +if pid == 0: + # The child runs this. + # To get the behaviour we want, we only need to replace the process's + # stdout with pts. Everything else should remain in place, so that things + # like `ps -eF | pty rg python | less -r` will still work as intended. + os.dup2(pts, stdout) + # This is not like a subprocess.call(). It replaces the entire child + # process with argv[1:], meaning execvp will not return! Web search + # "fork exec" for more. + os.execvp(argv[1], argv[1:]) + # Use this if calling fish. + #os.execvp('fish', ['fish', '-c', fish_escape(argv[1:])]) + + +# The parent runs this. + +# If the parent doesn't close the slave end, the script won't be able to +# exit. The next read on ptm after the child process terminates would hang +# forever because pts would technically still be open. +os.close(pts) + +# The whole process group gets SIGINT, including the child, so we don't need +# to react to it. We'll know when to leave, judging by what the child does. +signal.signal(signal.SIGINT, signal.SIG_IGN) + +while True: + try: + chunk = os.read(ptm, 4096) + except OSError: + break + try: + os.write(stdout, chunk) + except BrokenPipeError: + # This happens when the parent is piping output to another process in a + # pipeline, like in `pty ls --color -R | less -r`, and the receiving + # process is terminated before the child has exited. If the receiving + # process is less, this can happen very easily. It happens every time + # the user decides to quit less before it has displayed all output. So, + # we need to stop the child process now. + os.kill(pid, signal.SIGTERM) + break +wait_pid, status = os.waitpid(pid, 0) +exit(status >> 8) diff --git a/system/clearpilot/tools_wip_4_28/moc_test2.cc b/system/clearpilot/tools_wip_4_28/moc_test2.cc new file mode 100644 index 0000000..ddfdb87 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/moc_test2.cc @@ -0,0 +1,188 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'test2.h' +** +** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "test2.h" +#include +#include +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'test2.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 67 +#error "This file was generated using the moc from 5.12.8. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED +struct qt_meta_stringdata_TrackWidget_t { + QByteArrayData data[1]; + char stringdata0[12]; +}; +#define QT_MOC_LITERAL(idx, ofs, len) \ + Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ + qptrdiff(offsetof(qt_meta_stringdata_TrackWidget_t, stringdata0) + ofs \ + - idx * sizeof(QByteArrayData)) \ + ) +static const qt_meta_stringdata_TrackWidget_t qt_meta_stringdata_TrackWidget = { + { +QT_MOC_LITERAL(0, 0, 11) // "TrackWidget" + + }, + "TrackWidget" +}; +#undef QT_MOC_LITERAL + +static const uint qt_meta_data_TrackWidget[] = { + + // content: + 8, // revision + 0, // classname + 0, 0, // classinfo + 0, 0, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + 0 // eod +}; + +void TrackWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) +{ + Q_UNUSED(_o); + Q_UNUSED(_id); + Q_UNUSED(_c); + Q_UNUSED(_a); +} + +QT_INIT_METAOBJECT const QMetaObject TrackWidget::staticMetaObject = { { + &QWidget::staticMetaObject, + qt_meta_stringdata_TrackWidget.data, + qt_meta_data_TrackWidget, + qt_static_metacall, + nullptr, + nullptr +} }; + + +const QMetaObject *TrackWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; +} + +void *TrackWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return nullptr; + if (!strcmp(_clname, qt_meta_stringdata_TrackWidget.stringdata0)) + return static_cast(this); + return QWidget::qt_metacast(_clname); +} + +int TrackWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + return _id; +} +struct qt_meta_stringdata_Spinner_t { + QByteArrayData data[4]; + char stringdata0[18]; +}; +#define QT_MOC_LITERAL(idx, ofs, len) \ + Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ + qptrdiff(offsetof(qt_meta_stringdata_Spinner_t, stringdata0) + ofs \ + - idx * sizeof(QByteArrayData)) \ + ) +static const qt_meta_stringdata_Spinner_t qt_meta_stringdata_Spinner = { + { +QT_MOC_LITERAL(0, 0, 7), // "Spinner" +QT_MOC_LITERAL(1, 8, 6), // "update" +QT_MOC_LITERAL(2, 15, 0), // "" +QT_MOC_LITERAL(3, 16, 1) // "n" + + }, + "Spinner\0update\0\0n" +}; +#undef QT_MOC_LITERAL + +static const uint qt_meta_data_Spinner[] = { + + // content: + 8, // revision + 0, // classname + 0, 0, // classinfo + 1, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: name, argc, parameters, tag, flags + 1, 1, 19, 2, 0x0a /* Public */, + + // slots: parameters + QMetaType::Void, QMetaType::Int, 3, + + 0 // eod +}; + +void Spinner::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) +{ + if (_c == QMetaObject::InvokeMetaMethod) { + auto *_t = static_cast(_o); + Q_UNUSED(_t) + switch (_id) { + case 0: _t->update((*reinterpret_cast< int(*)>(_a[1]))); break; + default: ; + } + } +} + +QT_INIT_METAOBJECT const QMetaObject Spinner::staticMetaObject = { { + &QWidget::staticMetaObject, + qt_meta_stringdata_Spinner.data, + qt_meta_data_Spinner, + qt_static_metacall, + nullptr, + nullptr +} }; + + +const QMetaObject *Spinner::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; +} + +void *Spinner::qt_metacast(const char *_clname) +{ + if (!_clname) return nullptr; + if (!strcmp(_clname, qt_meta_stringdata_Spinner.stringdata0)) + return static_cast(this); + return QWidget::qt_metacast(_clname); +} + +int Spinner::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + if (_id < 1) + qt_static_metacall(this, _c, _id, _a); + _id -= 1; + } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { + if (_id < 1) + *reinterpret_cast(_a[0]) = -1; + _id -= 1; + } + return _id; +} +QT_WARNING_POP +QT_END_MOC_NAMESPACE diff --git a/system/clearpilot/tools_wip_4_28/provision.sh b/system/clearpilot/tools_wip_4_28/provision.sh new file mode 100644 index 0000000..826201c --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/provision.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# Provision script for BrianBot +# These actions only occur on BrianBot's comma device. + +# 1. Check the string in /data/params/d/DongleId +dongle_id=$(cat /data/params/d/DongleId) +if [[ ! $dongle_id == 90bb71a* ]]; then + echo "Invalid dongle ID." + exit 1 +fi + +echo "BrianBot dongle ID detected." + +# 2. Check if ccrypt is installed, install if not +if ! command -v ccrypt >/dev/null 2>&1; then + echo "Installing ccrypt..." + sudo apt-get update + sudo apt-get install -y ccrypt +fi + +# 3. Decrypt SSH keys if they have not been decrypted yet +if [ ! -f /data/openpilot/system/clearpilot/dev/id_rsa.pub ]; then + echo "Decrypting SSH keys..." + ccrypt -d -k "$dongle_id" /data/openpilot/system/clearpilot/dev/id_rsa.pub.ccrypt + ccrypt -d -k "$dongle_id" /data/openpilot/system/clearpilot/dev/id_rsa.ccrypt + ccrypt -d -k "$dongle_id" /data/openpilot/system/clearpilot/dev/reverse_ssh.ccrypt +fi + +# 4. Ensure .ssh directory and keys exist +ssh_dir="/home/comma/.ssh" +if [[ ! -f "$ssh_dir/id_rsa" || ! -f "$ssh_dir/id_rsa.pub" ]]; then + echo "Setting up SSH directory and keys..." + mkdir -p "$ssh_dir" + cp /data/openpilot/system/clearpilot/dev/id_rsa /data/openpilot/system/clearpilot/dev/id_rsa.pub "$ssh_dir" + chmod 700 "$ssh_dir" + chmod 600 "$ssh_dir/id_rsa" "$ssh_dir/id_rsa.pub" +fi + +echo "Script execution complete." +exit 0 diff --git a/system/clearpilot/tools_wip_4_28/remount_ro.sh b/system/clearpilot/tools_wip_4_28/remount_ro.sh new file mode 100644 index 0000000..f4c166f --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/remount_ro.sh @@ -0,0 +1 @@ +sudo mount -o remount,ro / diff --git a/system/clearpilot/tools_wip_4_28/remount_rw.sh b/system/clearpilot/tools_wip_4_28/remount_rw.sh new file mode 100644 index 0000000..f819cb8 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/remount_rw.sh @@ -0,0 +1 @@ +sudo mount -o remount,rw / diff --git a/system/clearpilot/tools_wip_4_28/rotation_module.cpp b/system/clearpilot/tools_wip_4_28/rotation_module.cpp new file mode 100644 index 0000000..356eb66 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/rotation_module.cpp @@ -0,0 +1,33 @@ +#include +#include +#include +#include "/usr/include/aarch64-linux-gnu/qt5/QtGui/5.12.8/QtGui/qpa/qplatformnativeinterface.h" +#include + +#include +#include + +static PyObject* rotate_display(PyObject* self, PyObject* args) { + PyObject* pyObj; + if (!PyArg_ParseTuple(args, "O", &pyObj)) + return NULL; + + QWindow* window = sipUnwrapInstance(pyObj, sipAPI_rotation); + if (!window) { + PyErr_SetString(PyExc_RuntimeError, "Invalid window object."); + return NULL; + } + + QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); + wl_surface *s = static_cast(native->nativeResourceForWindow("surface", window)); + if (!s) { + PyErr_SetString(PyExc_RuntimeError, "Failed to obtain native Wayland surface."); + return NULL; + } + + wl_surface_set_buffer_transform(s, WL_OUTPUT_TRANSFORM_270); + wl_surface_commit(s); + + Py_RETURN_NONE; +} + diff --git a/system/clearpilot/tools_wip_4_28/rotation_module.sip b/system/clearpilot/tools_wip_4_28/rotation_module.sip new file mode 100644 index 0000000..97f9c2a --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/rotation_module.sip @@ -0,0 +1,19 @@ +// Define the module +%Module rotation 0 + +// Import PyQt types +%Import QtCore/QtCoremod.sip +%Import QtGui/QtGuimod.sip + + +// Define your class with the necessary methods +class QWindow; + +%MethodCode + QWindow* window = reinterpret_cast(a0); + if (!window) { + sipError = sipBadCallableArg; + } +%End + +void rotate_display(QWindow *window); diff --git a/system/clearpilot/tools_wip_4_28/rotation_module_build.py b/system/clearpilot/tools_wip_4_28/rotation_module_build.py new file mode 100644 index 0000000..9010ddc --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/rotation_module_build.py @@ -0,0 +1,32 @@ +from setuptools import setup, Extension +from distutils.command.build_ext import build_ext +import os + +# Specify the C++ compiler +os.environ["CC"] = "clang++" +os.environ["CXX"] = "clang++" + +class BuildExt(build_ext): + def build_extensions(self): + c_opts = ['-std=c++1z', '-DQCOM2', '-mcpu=cortex-a57', '-Wno-deprecated-declarations', '-O2', '-Wunused', '-Werror', '-Wshadow'] + for e in self.extensions: + e.extra_compile_args = c_opts + build_ext.build_extensions(self) + +module = Extension('rotation', + sources=['rotation_module.cpp'], + libraries=['Qt5Core', 'Qt5Gui', 'Qt5Widgets', 'wayland-client'], + include_dirs=[ + '/usr/include/aarch64-linux-gnu/qt5', + '/usr/include/aarch64-linux-gnu/qt5/QtCore', + '/usr/include/aarch64-linux-gnu/qt5/QtGui', + '/usr/include/aarch64-linux-gnu/qt5/QtWidgets' + ], + library_dirs=['/usr/lib/aarch64-linux-gnu', '/lib/aarch64-linux-gnu'], + language='c++') + +setup(name='RotationModule', + version='1.0', + description='Module for rotating display via native interface', + ext_modules=[module], + cmdclass={'build_ext': BuildExt}) diff --git a/system/clearpilot/tools_wip_4_28/rotation_module_build.sh b/system/clearpilot/tools_wip_4_28/rotation_module_build.sh new file mode 100644 index 0000000..37e2380 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/rotation_module_build.sh @@ -0,0 +1,2 @@ +python3 rotation_module_build.py build +cp build/lib.linux-aarch64-cpython-311/rotation.cpython-311-aarch64-linux-gnu.so ./rotation.so diff --git a/system/clearpilot/tools_wip_4_28/scrun b/system/clearpilot/tools_wip_4_28/scrun new file mode 100644 index 0000000..074d598 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/scrun @@ -0,0 +1,37 @@ +#!/bin/bash + +# Usage: +# scrun instancename command + +# - If instancename doesnt exist, starts a screen with instancename and executes the given command. +# - Does not run if the instance is already running. +# - Runs in the same context as a shell (loads environment variables). +# - Logs output into /var/log/scrun/instance/DATE.log, with rotation + +# bash -l -c "$@" + +# Based on https://gist.github.com/camperdave/980040 +echo "defshell -bash" > ~/.screenrc +echo "startup_message off" >> ~/.screenrc +echo "vbell off" >> ~/.screenrc +echo "deflogin on" >> ~/.screenrc +echo "defscrollback 10000" >> ~/.screenrc +echo "defutf8 on" >> ~/.screenrc +echo "defflow off" >> ~/.screenrc +echo "msgwait 20" >> ~/.screenrc +echo "term screen-256color-bce" >> ~/.screenrc + +#SCREENNAME=scrun_$1_ +SCREENNAME=$1 + +screen -wipe 2>/dev/null >/dev/null + +if ! screen -list | grep -q $SCREENNAME; then + cesc="${@:2}" # Everything but first one +# cesc="${cesc@Q}" # Escape it + screen -dmS $SCREENNAME python3 /data/openpilot/system/clearpilot/tools/faketty.py bash -l -c "$cesc" + echo screen -dmS $SCREENNAME python3 /data/openpilot/system/clearpilot/tools/faketty.py bash -l -c "$cesc" +# screen -dmS $1 "$@" +else + echo $SCREENNAME is already running +fi diff --git a/system/clearpilot/tools_wip_4_28/shell.py b/system/clearpilot/tools_wip_4_28/shell.py new file mode 100644 index 0000000..351a1fc --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/shell.py @@ -0,0 +1,90 @@ +import os +import sys +import signal +import logging +import platform +from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QScrollBar, QGraphicsView, QGraphicsScene, QGraphicsProxyWidget +from PyQt5.QtCore import Qt, QCoreApplication +from PyQt5.QtGui import QFont, QScreen + +import termqt +from termqt import Terminal, TerminalPOSIXExecIO + +class ExitOnMessageHandler(logging.Handler): + def emit(self, record): + if "Spawned process has been killed" in record.getMessage(): + QApplication.quit() # Exit the application gracefully + +def setup_logger(): + logger = logging.getLogger() + logger.setLevel(logging.DEBUG) + handler = logging.StreamHandler() + formatter = logging.Formatter("[%(asctime)s] > [%(filename)s:%(lineno)d] %(message)s") + handler.setFormatter(formatter) + logger.addHandler(handler) + handler2 = ExitOnMessageHandler() + logger.addHandler(handler2) + return logger + +def create_terminal_app(): + os.environ["XDG_RUNTIME_DIR"] = "/var/tmp/weston" + os.environ["WAYLAND_DISPLAY"] = "wayland-0" + os.environ["QT_QPA_PLATFORM"] = "wayland" + os.environ["QT_WAYLAND_SHELL_INTEGRATION"] = "wl-shell" + + + QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling) + app = QApplication(sys.argv) + desktop = QApplication.desktop() + ag = desktop.availableGeometry(desktop.primaryScreen()) + print (ag.width()) + print (ag.height()) + + window = QWidget() + window.setWindowTitle("termqt on {}".format(platform.system())) + window.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) + window.setGeometry(0,0, ag.width(), ag.height()) + window.setStyleSheet("background-color: black;") + window.showFullScreen() + + scene = QGraphicsScene() + view = QGraphicsView(scene, window) + print (window.width()) + print (window.height()) + view.setGeometry(0, 0, window.width(), window.height()) + view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + + layout = QHBoxLayout() + terminal = Terminal(window.width(), window.height(), logger=setup_logger(), font_size=32) + + proxy_terminal = scene.addWidget(terminal) + view.setScene(scene) + view.rotate(90) # Rotate the view by 90 degrees clockwise + + window_layout = QHBoxLayout(window) + window_layout.addWidget(view) + window_layout.setContentsMargins(0,0,0,0) + window.setLayout(window_layout) + + return app, window, terminal + +def main(): + signal.signal(signal.SIGINT, signal.SIG_DFL) # Enable Ctrl+C + if len(sys.argv) < 2: + print("Usage: python start.py ''") + return + + command = "bash -c '{}'".format(sys.argv[1]) + app, window, terminal = create_terminal_app() + platform_name = platform.system() + terminal_io = TerminalPOSIXExecIO(terminal.col_len, terminal.row_len, command, os.environ, setup_logger()) + terminal_io.stdout_callback = terminal.stdout + terminal.stdin_callback = terminal_io.write + terminal.resize_callback = terminal_io.resize + terminal_io.spawn() + exit_code = app.exec_() + sys.exit(exit_code) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/system/clearpilot/tools_wip_4_28/shell.sh b/system/clearpilot/tools_wip_4_28/shell.sh new file mode 100644 index 0000000..bf50aa4 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/shell.sh @@ -0,0 +1 @@ +sudo su comma -c "python3 shell.py \"echo hello; sleep 5\" diff --git a/system/clearpilot/tools_wip_4_28/test.c b/system/clearpilot/tools_wip_4_28/test.c new file mode 100644 index 0000000..fca15ca --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/test.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include +#include + +static void activate(GtkApplication* app, gpointer user_data) { + GtkWidget *window; + window = gtk_application_window_new(app); + gtk_window_set_title(GTK_WINDOW(window), "Basic C GTK App"); + gtk_window_set_default_size(GTK_WINDOW(window), 200, 200); + gtk_widget_show_all(window); +} + +int main(int argc, char **argv) { + GtkApplication *app; + int status; + + // Signal handling + signal(SIGINT, SIG_DFL); + + app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE); + g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); + status = g_application_run(G_APPLICATION(app), argc, argv); + g_object_unref(app); + + return status; +} diff --git a/system/clearpilot/tools_wip_4_28/test2 b/system/clearpilot/tools_wip_4_28/test2 new file mode 100755 index 0000000000000000000000000000000000000000..0608f6995559b9a3caea38d0c34d0e543f374e67 GIT binary patch literal 440816 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�SxR*MnGZ6{G`b21 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 H-t7MY5n(EN literal 0 HcmV?d00001 diff --git a/system/clearpilot/tools_wip_4_28/test2.cc b/system/clearpilot/tools_wip_4_28/test2.cc new file mode 100644 index 0000000..c942a6a --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/test2.cc @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include +#include + +#include "/data/openpilot/system/hardware/hw.h" +#include "/data/openpilot/selfdrive/ui/qt/qt_window.h" +#include "/data/openpilot/selfdrive/ui/qt/util.h" + +static void handleSignal(int sig) { + QApplication::quit(); +} + +int main(int argc, char *argv[]) { + QApplication app(argc, argv); + + if (argc < 2) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return 1; + } + + // Set up Ctrl+C signal handler + signal(SIGINT, handleSignal); + + QWidget window; + window.setWindowTitle("Web Viewer"); + window.setStyleSheet("background-color: black;"); + window.showFullScreen(); // Show the window to ensure the handle is valid + + auto windowHandle = window.windowHandle(); + if (!windowHandle) { + fprintf(stderr, "Error: Unable to obtain window handle.\n"); + return 1; + } + + QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); + auto *s = static_cast(native->nativeResourceForWindow("surface", windowHandle)); + if (!s) { + fprintf(stderr, "Error: Unable to obtain native Wayland surface.\n"); + return 1; + } + + wl_surface_set_buffer_transform(s, WL_OUTPUT_TRANSFORM_270); + wl_surface_commit(s); + + QVBoxLayout *layout = new QVBoxLayout(&window); + QWebView *view = new QWebView; + view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // Ensure it expands to fill layout + layout->addWidget(view); + + QString url = argv[1]; + view->load(QUrl(url)); + + // Resize window after setting up layout and loading the page + window.setFixedSize(2160, 1080); // Set fixed size after rotation + + window.show(); + + return app.exec(); +} diff --git a/system/clearpilot/tools_wip_4_28/test2.h b/system/clearpilot/tools_wip_4_28/test2.h new file mode 100644 index 0000000..a05b71b --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/test2.h @@ -0,0 +1,10 @@ +#include + +#include +#include +#include +#include +#include +#include + +#include diff --git a/system/clearpilot/tools_wip_4_28/test3.cc b/system/clearpilot/tools_wip_4_28/test3.cc new file mode 100644 index 0000000..c2d50f9 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/test3.cc @@ -0,0 +1,120 @@ +#include "test2.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "/data/openpilot/system/hardware/hw.h" +#include "/data/openpilot/selfdrive/ui/qt/qt_window.h" +#include "/data/openpilot/selfdrive/ui/qt/util.h" + +TrackWidget::TrackWidget(QWidget *parent) : QWidget(parent) { + setAttribute(Qt::WA_OpaquePaintEvent); + setFixedSize(spinner_size); + + // pre-compute all the track imgs. make this a gif instead? + QPixmap comma_img = loadPixmap("../assets/img_spinner_comma.png", spinner_size); + QPixmap track_img = loadPixmap("../assets/img_spinner_track.png", spinner_size); + + QTransform transform(1, 0, 0, 1, width() / 2, height() / 2); + QPixmap pm(spinner_size); + QPainter p(&pm); + p.setRenderHint(QPainter::SmoothPixmapTransform); + for (int i = 0; i < track_imgs.size(); ++i) { + p.resetTransform(); + p.fillRect(0, 0, spinner_size.width(), spinner_size.height(), Qt::black); + p.drawPixmap(0, 0, comma_img); + p.setTransform(transform.rotate(360 / spinner_fps)); + p.drawPixmap(-width() / 2, -height() / 2, track_img); + track_imgs[i] = pm.copy(); + } + + m_anim.setDuration(1000); + m_anim.setStartValue(0); + m_anim.setEndValue(int(track_imgs.size() -1)); + m_anim.setLoopCount(-1); + m_anim.start(); + connect(&m_anim, SIGNAL(valueChanged(QVariant)), SLOT(update())); +} + +void TrackWidget::paintEvent(QPaintEvent *event) { + QPainter painter(this); + painter.drawPixmap(0, 0, track_imgs[m_anim.currentValue().toInt()]); +} + +// Spinner + +Spinner::Spinner(QWidget *parent) : QWidget(parent) { + QGridLayout *main_layout = new QGridLayout(this); + main_layout->setSpacing(0); + main_layout->setMargin(200); + + main_layout->addWidget(new TrackWidget(this), 0, 0, Qt::AlignHCenter | Qt::AlignVCenter); + + text = new QLabel(); + text->setWordWrap(true); + text->setVisible(false); + text->setAlignment(Qt::AlignCenter); + main_layout->addWidget(text, 1, 0, Qt::AlignHCenter); + + progress_bar = new QProgressBar(); + progress_bar->setRange(5, 100); + progress_bar->setTextVisible(false); + progress_bar->setVisible(false); + progress_bar->setFixedHeight(20); + main_layout->addWidget(progress_bar, 1, 0, Qt::AlignHCenter); + + setStyleSheet(R"( + Spinner { + background-color: black; + } + QLabel { + color: white; + font-size: 80px; + background-color: transparent; + } + QProgressBar { + background-color: #373737; + width: 1000px; + border solid white; + border-radius: 10px; + } + QProgressBar::chunk { + border-radius: 10px; + background-color: rgba(23, 134, 68, 255); + } + )"); + + notifier = new QSocketNotifier(fileno(stdin), QSocketNotifier::Read); + QObject::connect(notifier, &QSocketNotifier::activated, this, &Spinner::update); +} + +void Spinner::update(int n) { + std::string line; + std::getline(std::cin, line); + + if (line.length()) { + bool number = std::all_of(line.begin(), line.end(), ::isdigit); + text->setVisible(!number); + progress_bar->setVisible(number); + text->setText(QString::fromStdString(line)); + if (number) { + progress_bar->setValue(std::stoi(line)); + } + } +} + +int main(int argc, char *argv[]) { + initApp(argc, argv); + QApplication a(argc, argv); + Spinner spinner; + setMainWindow(&spinner); + return a.exec(); +} diff --git a/system/clearpilot/tools_wip_4_28/test3.h b/system/clearpilot/tools_wip_4_28/test3.h new file mode 100644 index 0000000..43d90a7 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/test3.h @@ -0,0 +1,37 @@ +#include + +#include +#include +#include +#include +#include +#include + +constexpr int spinner_fps = 30; +constexpr QSize spinner_size = QSize(360, 360); + +class TrackWidget : public QWidget { + Q_OBJECT +public: + TrackWidget(QWidget *parent = nullptr); + +private: + void paintEvent(QPaintEvent *event) override; + std::array track_imgs; + QVariantAnimation m_anim; +}; + +class Spinner : public QWidget { + Q_OBJECT + +public: + explicit Spinner(QWidget *parent = 0); + +private: + QLabel *text; + QProgressBar *progress_bar; + QSocketNotifier *notifier; + +public slots: + void update(int n); +}; diff --git a/system/clearpilot/tools_wip_4_28/test4.cc b/system/clearpilot/tools_wip_4_28/test4.cc new file mode 100644 index 0000000..11ee15f --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/test4.cc @@ -0,0 +1,64 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +int main(int argc, char *argv[]) { + QApplication app(argc, argv); + + if (argc < 2) { + printf("Usage: %s ''\n", argv[0]); + return 1; + } + + QWidget window; + window.setWindowTitle("Shell Command Output Viewer"); + window.setStyleSheet("background-color: black;"); + + QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); + wl_surface *s = reinterpret_cast(native->nativeResourceForWindow("surface", window.windowHandle())); + wl_surface_set_buffer_transform(s, WL_OUTPUT_TRANSFORM_270); + wl_surface_commit(s); + void *egl = native->nativeResourceForWindow("egldisplay", window.windowHandle()); + assert(egl != nullptr); + + window.showFullScreen(); + + QVBoxLayout *layout = new QVBoxLayout(&window); + QTextEdit *outputDisplay = new QTextEdit; + outputDisplay->setFont(QFont("Consolas", 32)); + outputDisplay->setReadOnly(true); + outputDisplay->setStyleSheet("color: white; background-color: black;"); + layout->addWidget(outputDisplay); + + QProcess process; + QObject::connect(&process, &QProcess::readyReadStandardOutput, [&]() { + static QStringList lines; + QString output = process.readAllStandardOutput(); + lines += output.split("\n", QString::SkipEmptyParts); + while (lines.size() > 100) { + lines.removeFirst(); + } + outputDisplay->setPlainText(lines.join("\n")); + outputDisplay->verticalScrollBar()->setValue(outputDisplay->verticalScrollBar()->maximum()); + }); + + QObject::connect(&process, QOverload::of(&QProcess::finished), [&]() { + app.quit(); + }); + + QString command = argv[1]; + process.start(QString("bash -c \"%1\"").arg(command)); + + return app.exec(); +} diff --git a/system/clearpilot/tools_wip_4_28/webview.py b/system/clearpilot/tools_wip_4_28/webview.py new file mode 100644 index 0000000..62e5337 --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/webview.py @@ -0,0 +1,66 @@ +import os +import sys +from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QGraphicsView, QGraphicsScene +from PyQt5.QtCore import Qt, QUrl, QTimer +from PyQt5.QtGui import QCursor, QPixmap, QTransform +from PyQt5.QtWebEngineWidgets import QWebEngineView +import rotation + +def create_webview_app(): + # Set environment for Wayland + os.environ["XDG_RUNTIME_DIR"] = "/var/tmp/weston" + os.environ["WAYLAND_DISPLAY"] = "wayland-0" + os.environ["QT_QPA_PLATFORM"] = "wayland" + os.environ["QT_WAYLAND_SHELL_INTEGRATION"] = "wl-shell" + + # Application setup + app = QApplication(sys.argv) + window = QWidget() + window.setWindowTitle("Qt WebView Example") + window.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) + sg = QApplication.desktop().availableGeometry(window) + window.setGeometry(0, 0, sg.height(), sg.width()) + window.setStyleSheet("background-color: black;") + + scene = QGraphicsScene() + view = QGraphicsView(scene, window) + view.setGeometry(0, 0, sg.width(), sg.height()) + view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + + webview = QWebEngineView() + webview.load(QUrl("https://cdpn.io/yananas/fullpage/rwvZvY")) + webview.setGeometry(0, 0, sg.width(), sg.height()) + scene.addWidget(webview) + view.setScene(scene) + + window_layout = QHBoxLayout(window) + window_layout.addWidget(view) + + window.setLayout(window_layout) + + window.showFullScreen() + + window_handle = window.windowHandle() + rotation.rotate_display(window_handle) + + # Delay rotation using QTimer +# QTimer.singleShot(1000, lambda: rotate_display(window)) + + return app, window + +def rotate_display(window): + window_handle = window.windowHandle() + if window_handle: + print("Rotating display.") + try: + print(int(window_handle.winId())) + rotation.rotate_display(int(window_handle.winId())) + except Exception as e: + print(f"Error rotating display: {e}") + else: + print("Window handle is not valid.") + +if __name__ == "__main__": + app, _ = create_webview_app() + sys.exit(app.exec_()) diff --git a/system/clearpilot/tools_wip_4_28/webview.sh b/system/clearpilot/tools_wip_4_28/webview.sh new file mode 100644 index 0000000..f6ed25b --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/webview.sh @@ -0,0 +1 @@ +sudo su comma -c "nice python3 webview.py" \ No newline at end of file diff --git a/system/clearpilot/tools_wip_4_28/webview2.py b/system/clearpilot/tools_wip_4_28/webview2.py new file mode 100644 index 0000000..5d4acbb --- /dev/null +++ b/system/clearpilot/tools_wip_4_28/webview2.py @@ -0,0 +1,75 @@ +import os +import sys +import signal +from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QGraphicsView, QGraphicsScene +from PyQt5.QtCore import Qt, QUrl, QPointF, QTimer, QObject, QEvent +from PyQt5.QtGui import QCursor, QPixmap, QTransform +from PyQt5.QtWebEngineWidgets import QWebEngineView + +import rotation + +webview = None + +def create_webview_app(): + global webview + + # Set environment for Wayland + os.environ["XDG_RUNTIME_DIR"] = "/var/tmp/weston" + os.environ["WAYLAND_DISPLAY"] = "wayland-0" + os.environ["QT_QPA_PLATFORM"] = "wayland" + os.environ["QT_WAYLAND_SHELL_INTEGRATION"] = "wl-shell" + + # Application setup + app = QApplication(sys.argv) + desktop = QApplication.desktop() + + sg = desktop.availableGeometry(desktop.primaryScreen()) + + window = QWidget() + window.setWindowTitle("Qt WebView Example") + window.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) + window.setGeometry(0, 0, sg.height(), sg.width()) + window.setStyleSheet("background-color: black;") + window.showFullScreen() + + scene = QGraphicsScene() + view = QGraphicsView(scene, window) + view.setGeometry(0, 0, sg.width(), sg.height()) + view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + + # Create WebView + webview = QWebEngineView() + webview.load(QUrl("https://cdpn.io/yananas/fullpage/rwvZvY")) + webview.setGeometry(0, 0, sg.width(), sg.height()) + + # Add WebView to the scene + proxy_webview = scene.addWidget(webview) + view.setScene(scene) + # view.rotate(90) # Rotate the view by 90 degrees + + # Layout setup + window_layout = QHBoxLayout(window) + window_layout.addWidget(view) + window_layout.setContentsMargins(0, 0, 0, 0) + window.setLayout(window_layout) + + window_handle = int(window.winId()) +# window_handle = window.windowHandle() + print ("Handle:") + print (window_handle) +# if window_handle: +# rotation.rotate_display(window_handle) +# else: +# print("Window handle is not valid.") + + return app, window + +def main(): + signal.signal(signal.SIGINT, signal.SIG_DFL) # Enable Ctrl+C to terminate the application + app, window = create_webview_app() + exit_code = app.exec_() + sys.exit(exit_code) + +if __name__ == "__main__": + main()