ui: prevent device pairing if no internet or system time is invalid (#34403)

* gate pairing device if system time is invalid

* update translations

* Check for internet connectivity

* Update selfdrive/ui/qt/widgets/prime.cc

* Update selfdrive/ui/qt/widgets/prime.cc

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
pull/34414/head
Dean Lee 3 months ago committed by GitHub
parent 895c78b09a
commit 7a1bf26aa5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 13
      common/util.cc
  2. 2
      common/util.h
  3. 8
      selfdrive/ui/qt/widgets/prime.cc
  4. 1
      selfdrive/ui/qt/widgets/prime.h
  5. 4
      selfdrive/ui/translations/main_ar.ts
  6. 4
      selfdrive/ui/translations/main_de.ts
  7. 4
      selfdrive/ui/translations/main_es.ts
  8. 4
      selfdrive/ui/translations/main_fr.ts
  9. 4
      selfdrive/ui/translations/main_ja.ts
  10. 4
      selfdrive/ui/translations/main_ko.ts
  11. 4
      selfdrive/ui/translations/main_pt-BR.ts
  12. 4
      selfdrive/ui/translations/main_th.ts
  13. 4
      selfdrive/ui/translations/main_tr.ts
  14. 4
      selfdrive/ui/translations/main_zh-CHS.ts
  15. 4
      selfdrive/ui/translations/main_zh-CHT.ts

@ -294,4 +294,17 @@ std::string check_output(const std::string& command) {
return result; return result;
} }
bool system_time_valid() {
// Default to August 26, 2024
tm min_tm = {.tm_year = 2024 - 1900, .tm_mon = 7, .tm_mday = 26};
time_t min_date = mktime(&min_tm);
struct stat st;
if (stat("/lib/systemd/systemd", &st) == 0) {
min_date = std::max(min_date, st.st_mtime + 86400); // Add 1 day (86400 seconds)
}
return time(nullptr) > min_date;
}
} // namespace util } // namespace util

@ -96,6 +96,8 @@ bool create_directories(const std::string &dir, mode_t mode);
std::string check_output(const std::string& command); std::string check_output(const std::string& command);
bool system_time_valid();
inline void sleep_for(const int milliseconds) { inline void sleep_for(const int milliseconds) {
if (milliseconds > 0) { if (milliseconds > 0) {
std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds)); std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds));

@ -116,6 +116,14 @@ PairingPopup::PairingPopup(QWidget *parent) : DialogBase(parent) {
hlayout->addWidget(qr, 1); hlayout->addWidget(qr, 1);
} }
int PairingPopup::exec() {
if (!util::system_time_valid()) {
ConfirmationDialog::alert(tr("Please connect to Wi-Fi to complete initial pairing"), parentWidget());
return QDialog::Rejected;
}
return DialogBase::exec();
}
PrimeUserWidget::PrimeUserWidget(QWidget *parent) : QFrame(parent) { PrimeUserWidget::PrimeUserWidget(QWidget *parent) : QFrame(parent) {
setObjectName("primeWidget"); setObjectName("primeWidget");

@ -33,6 +33,7 @@ class PairingPopup : public DialogBase {
public: public:
explicit PairingPopup(QWidget* parent); explicit PairingPopup(QWidget* parent);
int exec() override;
}; };

@ -460,6 +460,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation>اجعل لـconnect.comma.ai إشارة مرجعية على شاشتك الرئيسية من أجل استخدامه مثل أي تطبيق</translation> <translation>اجعل لـconnect.comma.ai إشارة مرجعية على شاشتك الرئيسية من أجل استخدامه مثل أي تطبيق</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -455,6 +455,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation>Füge connect.comma.ai als Lesezeichen auf deinem Homescreen hinzu um es wie eine App zu verwenden</translation> <translation>Füge connect.comma.ai als Lesezeichen auf deinem Homescreen hinzu um es wie eine App zu verwenden</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -456,6 +456,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation>Añada connect.comma.ai a su pantalla de inicio para usarlo como una aplicación</translation> <translation>Añada connect.comma.ai a su pantalla de inicio para usarlo como una aplicación</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -456,6 +456,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation>Ajoutez connect.comma.ai à votre écran d&apos;accueil pour l&apos;utiliser comme une application</translation> <translation>Ajoutez connect.comma.ai à votre écran d&apos;accueil pour l&apos;utiliser comme une application</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -454,6 +454,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation>connect.comma.ai使</translation> <translation>connect.comma.ai使</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -455,6 +455,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation>connect.comma.ai를 </translation> <translation>connect.comma.ai를 </translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -456,6 +456,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation>Salve connect.comma.ai como sua página inicial para utilizar como um app</translation> <translation>Salve connect.comma.ai como sua página inicial para utilizar como um app</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -455,6 +455,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation> connect.comma.ai </translation> <translation> connect.comma.ai </translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -454,6 +454,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation>Uygulama gibi kullanmak için connect.comma.ai sitesini yer işaretlerine ekleyin.</translation> <translation>Uygulama gibi kullanmak için connect.comma.ai sitesini yer işaretlerine ekleyin.</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -455,6 +455,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation> connect.comma.ai 便使</translation> <translation> connect.comma.ai 便使</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

@ -455,6 +455,10 @@
<source>Bookmark connect.comma.ai to your home screen to use it like an app</source> <source>Bookmark connect.comma.ai to your home screen to use it like an app</source>
<translation> connect.comma.ai 便 App 使</translation> <translation> connect.comma.ai 便 App 使</translation>
</message> </message>
<message>
<source>Please connect to Wi-Fi to complete initial pairing</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ParamControl</name> <name>ParamControl</name>

Loading…
Cancel
Save