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 USERDATA "/dev/disk/by-partlabel/userdata"
void Reset::doReset() {
// best effort to wipe nvme and sd card
void Reset::doErase() {
// best effort to wipe nvme
std::system("sudo umount " 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/*");
std::system("sudo umount " USERDATA);
int fmt = std::system("yes | sudo mkfs.ext4 " USERDATA);
@ -30,22 +27,26 @@ void Reset::doReset() {
rebootBtn->show();
}
void Reset::startReset() {
body->setText(tr("Resetting device...\nThis may take up to a minute."));
rejectBtn->hide();
rebootBtn->hide();
confirmBtn->hide();
#ifdef __aarch64__
QTimer::singleShot(100, this, &Reset::doErase);
#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 {
body->setText(tr("Resetting device..."));
rejectBtn->hide();
rebootBtn->hide();
confirmBtn->hide();
#ifdef __aarch64__
QTimer::singleShot(100, this, &Reset::doReset);
#endif
startReset();
}
}
Reset::Reset(bool recover, QWidget *parent) : QWidget(parent) {
Reset::Reset(ResetMode mode, QWidget *parent) : QWidget(parent) {
QVBoxLayout *main_layout = new QVBoxLayout(this);
main_layout->setContentsMargins(45, 220, 45, 45);
main_layout->setSpacing(0);
@ -56,7 +57,7 @@ Reset::Reset(bool recover, QWidget *parent) : QWidget(parent) {
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->setStyleSheet("font-size: 80px; font-weight: light;");
main_layout->addWidget(body, 1, Qt::AlignTop | Qt::AlignLeft);
@ -82,10 +83,16 @@ Reset::Reset(bool recover, QWidget *parent) : QWidget(parent) {
blayout->addWidget(confirmBtn);
QObject::connect(confirmBtn, &QPushButton::clicked, this, &Reset::confirm);
bool recover = mode == ResetMode::RECOVER;
rejectBtn->setVisible(!recover);
rebootBtn->setVisible(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"(
@ -108,9 +115,17 @@ Reset::Reset(bool recover, QWidget *parent) : QWidget(parent) {
}
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);
Reset reset(recover);
Reset reset(mode);
setMainWindow(&reset);
return a.exec();
}

@ -2,18 +2,25 @@
#include <QPushButton>
#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 {
Q_OBJECT
public:
explicit Reset(bool recover = false, QWidget *parent = 0);
explicit Reset(ResetMode mode, QWidget *parent = 0);
private:
QLabel *body;
QPushButton *rejectBtn;
QPushButton *rebootBtn;
QPushButton *confirmBtn;
void doReset();
void doErase();
void startReset();
private slots:
void confirm();

@ -576,18 +576,10 @@ location set</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>
</message>
<message>
<source>Resetting device...</source>
<translation>Gerät wird zurückgesetzt...</translation>
</message>
<message>
<source>System Reset</source>
<translation>System auf Werkseinstellungen zurücksetzen</translation>
</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>
<source>Cancel</source>
<translation>Abbrechen</translation>
@ -601,8 +593,17 @@ location set</source>
<translation>Bestätigen</translation>
</message>
<message>
<source>Unable to mount data partition. Press confirm to reset your device.</source>
<translation>Datenpartition kann nicht geöffnet werden. Drücke Annehmen, um dein Gerät auf Werkseinstellungen zurückzusetzen.</translation>
<source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<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>
</context>
<context>

@ -574,18 +574,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source>
<translation></translation>
</message>
<message>
<source>Resetting device...</source>
<translation>...</translation>
</message>
<message>
<source>System Reset</source>
<translation></translation>
</message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation></translation>
</message>
<message>
<source>Cancel</source>
<translation></translation>
@ -599,8 +591,17 @@ location set</source>
<translation></translation>
</message>
<message>
<source>Unable to mount data partition. Press confirm to reset your device.</source>
<translation>data</translation>
<source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<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>
</context>
<context>

@ -574,18 +574,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source>
<translation> ?</translation>
</message>
<message>
<source>Resetting device...</source>
<translation> ...</translation>
</message>
<message>
<source>System Reset</source>
<translation> </translation>
</message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation> . . .</translation>
</message>
<message>
<source>Cancel</source>
<translation></translation>
@ -599,8 +591,17 @@ location set</source>
<translation></translation>
</message>
<message>
<source>Unable to mount data partition. Press confirm to reset your device.</source>
<translation> . .</translation>
<source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<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>
</context>
<context>

@ -578,18 +578,10 @@ trabalho definido</translation>
<source>Are you sure you want to reset your device?</source>
<translation>Tem certeza que quer resetar seu dispositivo?</translation>
</message>
<message>
<source>Resetting device...</source>
<translation>Resetando dispositivo...</translation>
</message>
<message>
<source>System Reset</source>
<translation>Resetar Sistema</translation>
</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>
<source>Cancel</source>
<translation>Cancelar</translation>
@ -603,8 +595,17 @@ trabalho definido</translation>
<translation>Confirmar</translation>
</message>
<message>
<source>Unable to mount data partition. Press confirm to reset your device.</source>
<translation>Não foi possível montar a partição de dados. Pressione confirmar para resetar seu dispositivo.</translation>
<source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<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>
</context>
<context>

@ -572,18 +572,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source>
<translation></translation>
</message>
<message>
<source>Resetting device...</source>
<translation></translation>
</message>
<message>
<source>System Reset</source>
<translation></translation>
</message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation></translation>
</message>
<message>
<source>Cancel</source>
<translation></translation>
@ -597,8 +589,17 @@ location set</source>
<translation></translation>
</message>
<message>
<source>Unable to mount data partition. Press confirm to reset your device.</source>
<translation> </translation>
<source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<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>
</context>
<context>

@ -574,18 +574,10 @@ location set</source>
<source>Are you sure you want to reset your device?</source>
<translation></translation>
</message>
<message>
<source>Resetting device...</source>
<translation></translation>
</message>
<message>
<source>System Reset</source>
<translation></translation>
</message>
<message>
<source>System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot.</source>
<translation></translation>
</message>
<message>
<source>Cancel</source>
<translation></translation>
@ -599,8 +591,17 @@ location set</source>
<translation></translation>
</message>
<message>
<source>Unable to mount data partition. Press confirm to reset your device.</source>
<translation></translation>
<source>Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device.</source>
<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>
</context>
<context>

Loading…
Cancel
Save