diff --git a/selfdrive/ui/qt/maps/map.cc b/selfdrive/ui/qt/maps/map.cc index cd0e6b4998..9a143d33f4 100644 --- a/selfdrive/ui/qt/maps/map.cc +++ b/selfdrive/ui/qt/maps/map.cc @@ -211,7 +211,14 @@ void MapWindow::updateState(const UIState &s) { } initLayers(); - setError(locationd_valid ? "" : tr("Waiting for GPS")); + if (!locationd_valid) { + setError(tr("Waiting for GPS")); + } else if (routing_problem) { + setError(tr("Waiting for internet")); + } else { + setError(""); + } + if (locationd_valid) { // Update current location marker auto point = coordinate_to_collection(*last_position); @@ -236,6 +243,12 @@ void MapWindow::updateState(const UIState &s) { } if (sm.updated("navInstruction")) { + // an invalid navInstruction packet with a nav destination is only possible if: + // - API exception/no internet + // - route response is empty + auto dest = coordinate_from_param("NavDestination"); + routing_problem = !sm.valid("navInstruction") && dest.has_value(); + if (sm.valid("navInstruction")) { auto i = sm["navInstruction"].getNavInstruction(); map_eta->updateETA(i.getTimeRemaining(), i.getTimeRemainingTypical(), i.getDistanceRemaining()); @@ -393,6 +406,7 @@ void MapWindow::offroadTransition(bool offroad) { if (offroad) { clearRoute(); uiState()->scene.navigate_on_openpilot = false; + routing_problem = false; } else { auto dest = coordinate_from_param("NavDestination"); emit requestVisible(dest.has_value()); diff --git a/selfdrive/ui/qt/maps/map.h b/selfdrive/ui/qt/maps/map.h index 7e3200aef6..bcf2f79b3d 100644 --- a/selfdrive/ui/qt/maps/map.h +++ b/selfdrive/ui/qt/maps/map.h @@ -101,6 +101,7 @@ private: std::optional last_bearing; FirstOrderFilter velocity_filter; bool locationd_valid = false; + bool routing_problem = false; QWidget *map_overlay; QLabel *error; diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index dd714dcdec..b4282b6a9c 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -403,6 +403,10 @@ Waiting for GPS Warten auf GPS + + Waiting for internet + Auf Internet warten + MultiOptionDialog diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 9f1c56052a..319b08bc59 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -402,6 +402,10 @@ Waiting for GPS GPS信号を探しています + + Waiting for internet + インターネット接続を待機中 + MultiOptionDialog diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index d0329cbe0a..d30df3a622 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -402,6 +402,10 @@ Waiting for GPS GPS 수신중 + + Waiting for internet + 인터넷 대기중 + MultiOptionDialog diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index d33149b3a8..2cadd8bd6f 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -403,6 +403,10 @@ Waiting for GPS Esperando por GPS + + Waiting for internet + Esperando pela internet + MultiOptionDialog diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 8171765ef0..6b631b005c 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -402,6 +402,10 @@ Waiting for GPS 等待 GPS + + Waiting for internet + 等待网络连接 + MultiOptionDialog diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index fc6767a9a0..c9a627771e 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -402,6 +402,10 @@ Waiting for GPS 等待 GPS + + Waiting for internet + 連接至網路中 + MultiOptionDialog