AGNOS system reset: handle ABL reset (#27418)

* AGNOS system reset: handle ABL reset

* no more tapping

* eta
old-commit-hash: 72539fa177
beeps
Adeeb Shihadeh 2 years ago committed by GitHub
parent 177ec3efeb
commit d372fb4c3d
  1. 49
      selfdrive/ui/qt/setup/reset.cc
  2. 11
      selfdrive/ui/qt/setup/reset.h
  3. 21
      selfdrive/ui/translations/main_de.ts
  4. 21
      selfdrive/ui/translations/main_ja.ts
  5. 21
      selfdrive/ui/translations/main_ko.ts
  6. 21
      selfdrive/ui/translations/main_pt-BR.ts
  7. 21
      selfdrive/ui/translations/main_zh-CHS.ts
  8. 21
      selfdrive/ui/translations/main_zh-CHT.ts

@ -11,14 +11,11 @@
#define NVME "/dev/nvme0n1" #define NVME "/dev/nvme0n1"
#define USERDATA "/dev/disk/by-partlabel/userdata" #define USERDATA "/dev/disk/by-partlabel/userdata"
void Reset::doReset() { void Reset::doErase() {
// best effort to wipe nvme and sd card // best effort to wipe nvme
std::system("sudo umount " NVME); std::system("sudo umount " NVME);
std::system("yes | sudo mkfs.ext4 " NVME); std::system("yes | sudo mkfs.ext4 " NVME);
// we handle two cases here
// * user-prompted factory reset
// * recovering from a corrupt userdata by formatting
int rm = std::system("sudo rm -rf /data/*"); int rm = std::system("sudo rm -rf /data/*");
std::system("sudo umount " USERDATA); std::system("sudo umount " USERDATA);
int fmt = std::system("yes | sudo mkfs.ext4 " USERDATA); int fmt = std::system("yes | sudo mkfs.ext4 " USERDATA);
@ -30,22 +27,26 @@ void Reset::doReset() {
rebootBtn->show(); rebootBtn->show();
} }
void Reset::confirm() { void Reset::startReset() {
const QString confirm_txt = tr("Are you sure you want to reset your device?"); body->setText(tr("Resetting device...\nThis may take up to a minute."));
if (body->text() != confirm_txt) {
body->setText(confirm_txt);
} else {
body->setText(tr("Resetting device..."));
rejectBtn->hide(); rejectBtn->hide();
rebootBtn->hide(); rebootBtn->hide();
confirmBtn->hide(); confirmBtn->hide();
#ifdef __aarch64__ #ifdef __aarch64__
QTimer::singleShot(100, this, &Reset::doReset); QTimer::singleShot(100, this, &Reset::doErase);
#endif #endif
} }
void Reset::confirm() {
const QString confirm_txt = tr("Are you sure you want to reset your device?");
if (body->text() != confirm_txt) {
body->setText(confirm_txt);
} else {
startReset();
}
} }
Reset::Reset(bool recover, QWidget *parent) : QWidget(parent) { Reset::Reset(ResetMode mode, QWidget *parent) : QWidget(parent) {
QVBoxLayout *main_layout = new QVBoxLayout(this); QVBoxLayout *main_layout = new QVBoxLayout(this);
main_layout->setContentsMargins(45, 220, 45, 45); main_layout->setContentsMargins(45, 220, 45, 45);
main_layout->setSpacing(0); main_layout->setSpacing(0);
@ -56,7 +57,7 @@ Reset::Reset(bool recover, QWidget *parent) : QWidget(parent) {
main_layout->addSpacing(60); main_layout->addSpacing(60);
body = new QLabel(tr("System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.")); body = new QLabel(tr("Press confirm to erase all content and settings. Press cancel to resume boot."));
body->setWordWrap(true); body->setWordWrap(true);
body->setStyleSheet("font-size: 80px; font-weight: light;"); body->setStyleSheet("font-size: 80px; font-weight: light;");
main_layout->addWidget(body, 1, Qt::AlignTop | Qt::AlignLeft); main_layout->addWidget(body, 1, Qt::AlignTop | Qt::AlignLeft);
@ -82,10 +83,16 @@ Reset::Reset(bool recover, QWidget *parent) : QWidget(parent) {
blayout->addWidget(confirmBtn); blayout->addWidget(confirmBtn);
QObject::connect(confirmBtn, &QPushButton::clicked, this, &Reset::confirm); QObject::connect(confirmBtn, &QPushButton::clicked, this, &Reset::confirm);
bool recover = mode == ResetMode::RECOVER;
rejectBtn->setVisible(!recover); rejectBtn->setVisible(!recover);
rebootBtn->setVisible(recover); rebootBtn->setVisible(recover);
if (recover) { if (recover) {
body->setText(tr("Unable to mount data partition. Press confirm to reset your device.")); body->setText(tr("Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device."));
}
// automatically start if we're just finishing up an ABL reset
if (mode == ResetMode::FORMAT) {
startReset();
} }
setStyleSheet(R"( setStyleSheet(R"(
@ -108,9 +115,17 @@ Reset::Reset(bool recover, QWidget *parent) : QWidget(parent) {
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
bool recover = argc > 1 && strcmp(argv[1], "--recover") == 0; ResetMode mode = ResetMode::USER_RESET;
if (argc > 1) {
if (strcmp(argv[1], "--recover") == 0) {
mode = ResetMode::RECOVER;
} else if (strcmp(argv[1], "--format") == 0) {
mode = ResetMode::FORMAT;
}
}
QApplication a(argc, argv); QApplication a(argc, argv);
Reset reset(recover); Reset reset(mode);
setMainWindow(&reset); setMainWindow(&reset);
return a.exec(); return a.exec();
} }

@ -2,18 +2,25 @@
#include <QPushButton> #include <QPushButton>
#include <QWidget> #include <QWidget>
enum ResetMode {
USER_RESET, // user initiated a factory reset from openpilot
RECOVER, // userdata is corrupt for some reason, give a chance to recover
FORMAT, // finish up an ABL factory reset
};
class Reset : public QWidget { class Reset : public QWidget {
Q_OBJECT Q_OBJECT
public: public:
explicit Reset(bool recover = false, QWidget *parent = 0); explicit Reset(ResetMode mode, QWidget *parent = 0);
private: private:
QLabel *body; QLabel *body;
QPushButton *rejectBtn; QPushButton *rejectBtn;
QPushButton *rebootBtn; QPushButton *rebootBtn;
QPushButton *confirmBtn; QPushButton *confirmBtn;
void doReset(); void doErase();
void startReset();
private slots: private slots:
void confirm(); void confirm();

@ -576,18 +576,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source> <source>Are you sure you want to reset your device?</source>
<translation>Bist du sicher, dass du das Gerät auf Werkseinstellungen zurücksetzen möchtest?</translation> <translation>Bist du sicher, dass du das Gerät auf Werkseinstellungen zurücksetzen möchtest?</translation>
</message> </message>
<message>
<source>Resetting device...</source>
<translation>Gerät wird zurückgesetzt...</translation>
</message>
<message> <message>
<source>System Reset</source> <source>System Reset</source>
<translation>System auf Werkseinstellungen zurücksetzen</translation> <translation>System auf Werkseinstellungen zurücksetzen</translation>
</message> </message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation>Zurücksetzen auf Werkseinstellungen wurde ausgewählt. Drücke Annehmen, um alle Inhalte und Einstellungen zu löschen. Drücke Abbrechen, um mit dem Starten des Gerätes fortzufahren.</translation>
</message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
<translation>Abbrechen</translation> <translation>Abbrechen</translation>
@ -601,8 +593,17 @@ location set</source>
<translation>Bestätigen</translation> <translation>Bestätigen</translation>
</message> </message>
<message> <message>
<source>Unable to mount data partition. Press confirm to reset your device.</source> <source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<translation>Datenpartition kann nicht geöffnet werden. Drücke Annehmen, um dein Gerät auf Werkseinstellungen zurückzusetzen.</translation> <translation type="unfinished"></translation>
</message>
<message>
<source>Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Resetting device...
This may take up to a minute.</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

@ -574,18 +574,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source> <source>Are you sure you want to reset your device?</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Resetting device...</source>
<translation>...</translation>
</message>
<message> <message>
<source>System Reset</source> <source>System Reset</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation></translation>
</message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
@ -599,8 +591,17 @@ location set</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Unable to mount data partition. Press confirm to reset your device.</source> <source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<translation>data</translation> <translation type="unfinished"></translation>
</message>
<message>
<source>Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Resetting device...
This may take up to a minute.</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

@ -574,18 +574,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source> <source>Are you sure you want to reset your device?</source>
<translation> ?</translation> <translation> ?</translation>
</message> </message>
<message>
<source>Resetting device...</source>
<translation> ...</translation>
</message>
<message> <message>
<source>System Reset</source> <source>System Reset</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation> . . .</translation>
</message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
@ -599,8 +591,17 @@ location set</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Unable to mount data partition. Press confirm to reset your device.</source> <source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<translation> . .</translation> <translation type="unfinished"></translation>
</message>
<message>
<source>Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Resetting device...
This may take up to a minute.</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

@ -578,18 +578,10 @@ trabalho definido</translation>
<source>Are you sure you want to reset your device?</source> <source>Are you sure you want to reset your device?</source>
<translation>Tem certeza que quer resetar seu dispositivo?</translation> <translation>Tem certeza que quer resetar seu dispositivo?</translation>
</message> </message>
<message>
<source>Resetting device...</source>
<translation>Resetando dispositivo...</translation>
</message>
<message> <message>
<source>System Reset</source> <source>System Reset</source>
<translation>Resetar Sistema</translation> <translation>Resetar Sistema</translation>
</message> </message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation>Solicitado reset do sistema. Confirme para apagar todo conteúdo e configurações. Aperte cancelar para continuar boot.</translation>
</message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
<translation>Cancelar</translation> <translation>Cancelar</translation>
@ -603,8 +595,17 @@ trabalho definido</translation>
<translation>Confirmar</translation> <translation>Confirmar</translation>
</message> </message>
<message> <message>
<source>Unable to mount data partition. Press confirm to reset your device.</source> <source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<translation>Não foi possível montar a partição de dados. Pressione confirmar para resetar seu dispositivo.</translation> <translation type="unfinished"></translation>
</message>
<message>
<source>Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Resetting device...
This may take up to a minute.</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

@ -572,18 +572,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source> <source>Are you sure you want to reset your device?</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Resetting device...</source>
<translation></translation>
</message>
<message> <message>
<source>System Reset</source> <source>System Reset</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation></translation>
</message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
@ -597,8 +589,17 @@ location set</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Unable to mount data partition. Press confirm to reset your device.</source> <source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<translation> </translation> <translation type="unfinished"></translation>
</message>
<message>
<source>Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Resetting device...
This may take up to a minute.</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

@ -574,18 +574,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source> <source>Are you sure you want to reset your device?</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Resetting device...</source>
<translation></translation>
</message>
<message> <message>
<source>System Reset</source> <source>System Reset</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation></translation>
</message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
@ -599,8 +591,17 @@ location set</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Unable to mount data partition. Press confirm to reset your device.</source> <source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<translation></translation> <translation type="unfinished"></translation>
</message>
<message>
<source>Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Resetting device...
This may take up to a minute.</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

Loading…
Cancel
Save