17120 lines
681 KiB
Diff
Executable File
17120 lines
681 KiB
Diff
Executable File
Only in FrogPilot/body: Dockerfile
|
||
Only in FrogPilot/body/.github/workflows: test.yaml
|
||
Only in FrogPilot/body: LICENSE
|
||
Only in FrogPilot/body: .pre-commit-config.yaml
|
||
Only in FrogPilot/body: pyproject.toml
|
||
Only in FrogPilot/body: README.md
|
||
Only in FrogPilot/body: requirements.txt
|
||
Only in FrogPilot/body: SConstruct
|
||
Only in FrogPilot/body/STL: device_holder.stl
|
||
Only in FrogPilot/body/STL: training_stand.stl
|
||
Only in clearpilot/: clearpiliot_devqueue.txt
|
||
Only in clearpilot/: clearpilot_design.txt
|
||
Only in clearpilot/: clearpilot_notes.txt
|
||
Only in clearpilot/: clearpilot_settings.txt
|
||
Only in clearpilot/: clearpilot_testme.txt
|
||
Only in clearpilot/: commit_and_push
|
||
diff -r clearpilot/common/params.cc FrogPilot/common/params.cc
|
||
231a232
|
||
> {"CameraViewReset", PERSISTENT},
|
||
276d276
|
||
< {"DoSoftReboot", CLEAR_ON_MANAGER_START},
|
||
279a280
|
||
> {"EcoGearOn", PERSISTENT},
|
||
436a438
|
||
> {"SportGearOn", PERSISTENT},
|
||
diff -r clearpilot/common/realtime.py FrogPilot/common/realtime.py
|
||
37,40c37
|
||
< try: # CLEARPILOT ....
|
||
< os.sched_setaffinity(0, cores)
|
||
< except:
|
||
< nothing=0
|
||
---
|
||
> os.sched_setaffinity(0, cores)
|
||
Only in FrogPilot/docs/assets: icon-star-empty.svg
|
||
Only in FrogPilot/docs/assets: icon-star-full.svg
|
||
Only in FrogPilot/docs/assets: icon-star-half.svg
|
||
Only in FrogPilot/docs/assets: icon-youtube.svg
|
||
Only in FrogPilot/docs: BOUNTIES.md
|
||
diff -r clearpilot/docs/CARS.md FrogPilot/docs/CARS.md
|
||
7c7
|
||
< # 279 Supported Cars
|
||
---
|
||
> # 289 Supported Cars
|
||
38c38
|
||
< |Ford|Bronco Sport 2021-22|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Bronco Sport 2021-22">Buy Here</a></sub></details>||
|
||
---
|
||
> |Ford|Bronco Sport 2021-23|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Bronco Sport 2021-23">Buy Here</a></sub></details>||
|
||
39a40,41
|
||
> |Ford|Escape Hybrid 2020-22|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Escape Hybrid 2020-22">Buy Here</a></sub></details>||
|
||
> |Ford|Escape Plug-in Hybrid 2020-22|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Escape Plug-in Hybrid 2020-22">Buy Here</a></sub></details>||
|
||
40a43
|
||
> |Ford|Explorer Hybrid 2020-23|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Explorer Hybrid 2020-23">Buy Here</a></sub></details>||
|
||
41a45
|
||
> |Ford|Focus Hybrid 2018[<sup>3</sup>](#footnotes)|Adaptive Cruise Control with Lane Centering|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Focus Hybrid 2018">Buy Here</a></sub></details>||
|
||
42a47,48
|
||
> |Ford|Kuga Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Kuga Hybrid 2020-22">Buy Here</a></sub></details>||
|
||
> |Ford|Kuga Plug-in Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Kuga Plug-in Hybrid 2020-22">Buy Here</a></sub></details>||
|
||
44c50,52
|
||
< |Ford|Maverick 2023|Co-Pilot360 Assist|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Maverick 2023">Buy Here</a></sub></details>||
|
||
---
|
||
> |Ford|Maverick 2023-24|Co-Pilot360 Assist|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Maverick 2023-24">Buy Here</a></sub></details>||
|
||
> |Ford|Maverick Hybrid 2022|LARIAT Luxury|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Maverick Hybrid 2022">Buy Here</a></sub></details>||
|
||
> |Ford|Maverick Hybrid 2023-24|Co-Pilot360 Assist|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Maverick Hybrid 2023-24">Buy Here</a></sub></details>||
|
||
46c54
|
||
< |Genesis|G70 2020|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Genesis&model=G70 2020">Buy Here</a></sub></details>||
|
||
---
|
||
> |Genesis|G70 2020-23|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Genesis&model=G70 2020-23">Buy Here</a></sub></details>||
|
||
49c57
|
||
< |Genesis|G90 2017-18|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai C connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Genesis&model=G90 2017-18">Buy Here</a></sub></details>||
|
||
---
|
||
> |Genesis|G90 2017-20|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai C connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Genesis&model=G90 2017-20">Buy Here</a></sub></details>||
|
||
105c113
|
||
< |Hyundai|Santa Cruz 2022-23[<sup>6</sup>](#footnotes)|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai N connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Santa Cruz 2022-23">Buy Here</a></sub></details>||
|
||
---
|
||
> |Hyundai|Santa Cruz 2022-24[<sup>6</sup>](#footnotes)|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai N connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Santa Cruz 2022-24">Buy Here</a></sub></details>||
|
||
137a146
|
||
> |Kia|Niro Hybrid 2018|All|Stock|10 mph|32 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai C connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Hybrid 2018">Buy Here</a></sub></details>||
|
||
142,144c151,153
|
||
< |Kia|Niro Plug-in Hybrid 2020|All|Stock|0 mph|32 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai D connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2020">Buy Here</a></sub></details>||
|
||
< |Kia|Niro Plug-in Hybrid 2021|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai D connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2021">Buy Here</a></sub></details>||
|
||
< |Kia|Niro Plug-in Hybrid 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2022">Buy Here</a></sub></details>||
|
||
---
|
||
> |Kia|Niro Plug-in Hybrid 2020|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai D connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2020">Buy Here</a></sub></details>||
|
||
> |Kia|Niro Plug-in Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai D connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2021">Buy Here</a></sub></details>||
|
||
> |Kia|Niro Plug-in Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2022">Buy Here</a></sub></details>||
|
||
154c163
|
||
< |Kia|Sportage 2023[<sup>6</sup>](#footnotes)|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai N connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Sportage 2023">Buy Here</a></sub></details>||
|
||
---
|
||
> |Kia|Sportage 2023-24[<sup>6</sup>](#footnotes)|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai N connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Sportage 2023-24">Buy Here</a></sub></details>||
|
||
180c189,190
|
||
< |Lincoln|Aviator 2020-21|Co-Pilot360 Plus|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lincoln&model=Aviator 2020-21">Buy Here</a></sub></details>||
|
||
---
|
||
> |Lincoln|Aviator 2020-23|Co-Pilot360 Plus|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lincoln&model=Aviator 2020-23">Buy Here</a></sub></details>||
|
||
> |Lincoln|Aviator Plug-in Hybrid 2020-23|Co-Pilot360 Plus|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lincoln&model=Aviator Plug-in Hybrid 2020-23">Buy Here</a></sub></details>||
|
||
233c243
|
||
< |Toyota|Highlander 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Highlander 2017-19">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=0wS0wXSLzoo" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|
||
---
|
||
> |Toyota|Highlander 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Highlander 2017-19">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=0wS0wXSLzoo" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|
||
235c245
|
||
< |Toyota|Highlander Hybrid 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Highlander Hybrid 2017-19">Buy Here</a></sub></details>||
|
||
---
|
||
> |Toyota|Highlander Hybrid 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Highlander Hybrid 2017-19">Buy Here</a></sub></details>||
|
||
345a356
|
||
> * Toyota Highlander 2024+
|
||
Only in FrogPilot/docs: c_docs.rst
|
||
Only in FrogPilot/docs: conf.py
|
||
diff -r clearpilot/docs/CONTRIBUTING.md FrogPilot/docs/CONTRIBUTING.md
|
||
65c65
|
||
< * Annotate images in the [comma10k dateset](https://github.com/commaai/comma10k).
|
||
---
|
||
> * Annotate images in the [comma10k dataset](https://github.com/commaai/comma10k).
|
||
Only in FrogPilot/docs: index.md
|
||
Only in FrogPilot/docs: Makefile
|
||
Only in FrogPilot/docs: overview.rst
|
||
Only in FrogPilot/docs: README.md
|
||
Only in FrogPilot/docs: SAFETY.md
|
||
Only in FrogPilot/docs/_static: favicon.ico
|
||
Only in FrogPilot/docs/_static: logo.png
|
||
Only in FrogPilot/docs/_static: robots.txt
|
||
Only in FrogPilot/docs: WORKFLOW.md
|
||
Only in clearpilot/: frogpilot.diff
|
||
diff -r clearpilot/.git/COMMIT_EDITMSG FrogPilot/.git/COMMIT_EDITMSG
|
||
1c1,11
|
||
< wip
|
||
---
|
||
> foo
|
||
> # Please enter the commit message for your changes. Lines starting
|
||
> # with '#' will be ignored, and an empty message aborts the commit.
|
||
> #
|
||
> # On branch FrogPilot
|
||
> # Your branch is up to date with 'origin/FrogPilot'.
|
||
> #
|
||
> # Changes to be committed:
|
||
> # modified: third_party/acados/larch64/lib/libqpOASES_e.so
|
||
> # modified: third_party/maplibre-native-qt/x86_64/lib/libQMapLibre.so
|
||
> #
|
||
diff -r clearpilot/.git/config FrogPilot/.git/config
|
||
7c7
|
||
< url = git@privategit.hanson.xyz:brianhansonxyz/clearpilot.git
|
||
---
|
||
> url = https://github.com/FrogAi/FrogPilot.git
|
||
9c9
|
||
< [branch "clearpilot"]
|
||
---
|
||
> [branch "FrogPilot"]
|
||
11c11,14
|
||
< merge = refs/heads/clearpilot
|
||
---
|
||
> merge = refs/heads/FrogPilot
|
||
> [branch "FrogPilot-Development"]
|
||
> remote = origin
|
||
> merge = refs/heads/FrogPilot-Development
|
||
diff -r clearpilot/.git/FETCH_HEAD FrogPilot/.git/FETCH_HEAD
|
||
1c1
|
||
< c3754cc196c80a53b8464c6edd7a3b009bb90129 branch 'clearpilot' of privategit.hanson.xyz:brianhansonxyz/clearpilot
|
||
---
|
||
> 8eb522021d8567d4f3dbdb8197098d479b142af6 branch 'FrogPilot-Development' of https://github.com/FrogAi/FrogPilot
|
||
diff -r clearpilot/.git/HEAD FrogPilot/.git/HEAD
|
||
1c1
|
||
< ref: refs/heads/clearpilot
|
||
---
|
||
> ref: refs/heads/FrogPilot-Development
|
||
Binary files clearpilot/.git/index and FrogPilot/.git/index differ
|
||
diff -r clearpilot/.git/logs/HEAD FrogPilot/.git/logs/HEAD
|
||
1,100c1,7
|
||
< 0000000000000000000000000000000000000000 38ae44ed4e9aeba444cc9483a380efb267f49732 Your Name <you@example.com> 1714240831 -0500 clone: from privategit.hanson.xyz:brianhansonxyz/clearpilot.git
|
||
< 38ae44ed4e9aeba444cc9483a380efb267f49732 fe5f722eda227f152924d3aa17492c9d459f40f8 Your Name <you@example.com> 1714240918 -0500 commit: wip
|
||
< fe5f722eda227f152924d3aa17492c9d459f40f8 71b83ffe7fed8ec67d33fbd7c9d24137e73a0ebf Your Name <you@example.com> 1714241023 -0500 commit: wip
|
||
< 71b83ffe7fed8ec67d33fbd7c9d24137e73a0ebf ab7726ef50fc8ffb1e9927f1c519e6873d982fda Your Name <you@example.com> 1714241191 -0500 commit: wip
|
||
< ab7726ef50fc8ffb1e9927f1c519e6873d982fda 21363ce751f480e0d1aefdbf21d6631db7b9dcb9 Your Name <you@example.com> 1714243281 -0500 commit: wip
|
||
< 21363ce751f480e0d1aefdbf21d6631db7b9dcb9 ea1aad5ed1423f3b88647d799b8d808199408328 Your Name <you@example.com> 1714243396 -0500 commit: wip
|
||
< ea1aad5ed1423f3b88647d799b8d808199408328 2fbe9dbea1fd74e16fb73a804e313be94dfe87a2 Your Name <you@example.com> 1714243474 -0500 commit: wip
|
||
< 2fbe9dbea1fd74e16fb73a804e313be94dfe87a2 931db76fc6ad379f61ba61163f602b04e5e7d709 Your Name <you@example.com> 1714243685 -0500 commit: wip
|
||
< 931db76fc6ad379f61ba61163f602b04e5e7d709 d8f24f93803e4f77d848bcd6d2bc3f1cef6bdca0 Your Name <you@example.com> 1714243711 -0500 commit: wip
|
||
< d8f24f93803e4f77d848bcd6d2bc3f1cef6bdca0 50be724af117da8432b990d33fbc42c57fc62600 Your Name <you@example.com> 1714248898 -0500 commit: wip
|
||
< 50be724af117da8432b990d33fbc42c57fc62600 b6e1ed1d068b69b4063663c9aa4e3e170c703a2b Your Name <you@example.com> 1714250666 -0500 commit: wip
|
||
< b6e1ed1d068b69b4063663c9aa4e3e170c703a2b 38238548a9a4df771b9bfd024c53f65afee17106 Your Name <you@example.com> 1714251110 -0500 commit: wip
|
||
< 38238548a9a4df771b9bfd024c53f65afee17106 f6521ed78e266c14b1aadc2312c782b25ca890d1 Your Name <you@example.com> 1714251410 -0500 commit: wip
|
||
< f6521ed78e266c14b1aadc2312c782b25ca890d1 c1b8d65f3baf3eb1cb44f0c65e7f71260417df53 Your Name <you@example.com> 1714252319 -0500 commit: wip
|
||
< c1b8d65f3baf3eb1cb44f0c65e7f71260417df53 225849913e73e6b883357e1c7d6234073743d351 Your Name <you@example.com> 1714252584 -0500 commit: wip
|
||
< 225849913e73e6b883357e1c7d6234073743d351 00e8cd6b3f214e0bc23987274ca1364565bad7f9 Your Name <you@example.com> 1714252909 -0500 commit: wip
|
||
< 00e8cd6b3f214e0bc23987274ca1364565bad7f9 a53e5fce788859ef3fc018ccda6bf09b47e858f6 Your Name <you@example.com> 1714253013 -0500 commit: wip
|
||
< a53e5fce788859ef3fc018ccda6bf09b47e858f6 7dde84a7f641f60a530a65cac2bccfc047841c68 Your Name <you@example.com> 1714253375 -0500 commit: wip
|
||
< 7dde84a7f641f60a530a65cac2bccfc047841c68 9244b84ae4a3b4173f02c141295ab8f3f83065a5 Your Name <you@example.com> 1714253468 -0500 commit: wip
|
||
< 9244b84ae4a3b4173f02c141295ab8f3f83065a5 8a47c27cb08b6d0c46e2ca737d846e60612793b0 Your Name <you@example.com> 1714253677 -0500 commit: wip
|
||
< 8a47c27cb08b6d0c46e2ca737d846e60612793b0 2bb63f3e64461008a2962e406c8677a3685a3d61 Your Name <you@example.com> 1714277756 -0500 commit: wip
|
||
< 2bb63f3e64461008a2962e406c8677a3685a3d61 72e8bd8589bc2b5b6ef88e6559f177814e30b12f Your Name <you@example.com> 1714277819 -0500 pull origin clearpilot --rebase (start): checkout 72e8bd8589bc2b5b6ef88e6559f177814e30b12f
|
||
< 72e8bd8589bc2b5b6ef88e6559f177814e30b12f 5307c44635e316c5bba931515c0c261238bf7048 Your Name <you@example.com> 1714277819 -0500 pull origin clearpilot --rebase (pick): wip
|
||
< 5307c44635e316c5bba931515c0c261238bf7048 5307c44635e316c5bba931515c0c261238bf7048 Your Name <you@example.com> 1714277819 -0500 pull origin clearpilot --rebase (finish): returning to refs/heads/clearpilot
|
||
< 5307c44635e316c5bba931515c0c261238bf7048 2b4ba52cf05d3c84d567e243c5f751e9618ccdaf Your Name <you@example.com> 1714277991 -0500 commit: wip
|
||
< 2b4ba52cf05d3c84d567e243c5f751e9618ccdaf 926a1b9f4afa3e30078473c57e81964bc4b7e717 Your Name <you@example.com> 1714278401 -0500 commit: wip
|
||
< 926a1b9f4afa3e30078473c57e81964bc4b7e717 224327480a88175423a40b270ce0945460ec30dd concordia <concordia> 1714292663 -0500 commit: wip
|
||
< 224327480a88175423a40b270ce0945460ec30dd 6b584bc335f176d0f2b2de727e85ccfcbff021d1 Your Name <you@example.com> 1714328466 -0500 commit: wip
|
||
< 6b584bc335f176d0f2b2de727e85ccfcbff021d1 784daf270a47a97e766cf76415236e7320e5de52 Your Name <you@example.com> 1714328547 -0500 pull origin clearpilot --rebase (start): checkout 784daf270a47a97e766cf76415236e7320e5de52
|
||
< 784daf270a47a97e766cf76415236e7320e5de52 dd6ead0477304ac35a84c5c2a953fe79dec75591 Your Name <you@example.com> 1714328548 -0500 pull origin clearpilot --rebase (pick): wip
|
||
< dd6ead0477304ac35a84c5c2a953fe79dec75591 dd6ead0477304ac35a84c5c2a953fe79dec75591 Your Name <you@example.com> 1714328548 -0500 pull origin clearpilot --rebase (finish): returning to refs/heads/clearpilot
|
||
< dd6ead0477304ac35a84c5c2a953fe79dec75591 30f217ef628b60ded5e37fb6367f63c0c8ef9905 Your Name <you@example.com> 1714328569 -0500 commit: wip
|
||
< 30f217ef628b60ded5e37fb6367f63c0c8ef9905 a44d5633760c7f8ed65cb3e5f29152ae01488944 Your Name <you@example.com> 1714330106 -0500 commit: wip
|
||
< a44d5633760c7f8ed65cb3e5f29152ae01488944 6ebd9e07a181d9304f26546226afa1577996c5a6 Your Name <you@example.com> 1714331863 -0500 commit: wip
|
||
< 6ebd9e07a181d9304f26546226afa1577996c5a6 19ba7d9780c6468c45d028dc78e6d0968e1159bf Your Name <you@example.com> 1714331871 -0500 pull origin clearpilot --no-rebase: Merge made by the 'ort' strategy.
|
||
< 19ba7d9780c6468c45d028dc78e6d0968e1159bf 60b05f3b5b80ec69b558260e414ced8aba125b89 Your Name <you@example.com> 1714331958 -0500 commit: wip
|
||
< 60b05f3b5b80ec69b558260e414ced8aba125b89 5d4d06a5ecd0653e2fa028ad17cbb610aa749726 Your Name <you@example.com> 1714332097 -0500 commit: wip
|
||
< 5d4d06a5ecd0653e2fa028ad17cbb610aa749726 5e4ce05f6bb345d0c8a5a6fbfcbdcf1139a13af4 Your Name <you@example.com> 1714332283 -0500 commit: wip
|
||
< 5e4ce05f6bb345d0c8a5a6fbfcbdcf1139a13af4 8aa23c5317be3b73ced0d35525018e59e55bbb5d Your Name <you@example.com> 1714332396 -0500 commit: wip
|
||
< 8aa23c5317be3b73ced0d35525018e59e55bbb5d ca72245a5336ef2e84388cb918a91f6e52a2893f Your Name <you@example.com> 1714332580 -0500 commit: wip
|
||
< ca72245a5336ef2e84388cb918a91f6e52a2893f 90a4ed9cab76ab57594796a35f5db4a0e94e5b5d Your Name <you@example.com> 1714332683 -0500 commit: wip
|
||
< 90a4ed9cab76ab57594796a35f5db4a0e94e5b5d b2767a27f65024daac41738518d5c00e442841b7 Your Name <you@example.com> 1714334101 -0500 commit: wip
|
||
< b2767a27f65024daac41738518d5c00e442841b7 bbc881a913ab1c924762f6360f6c87f90a49bc7f Your Name <you@example.com> 1714334349 -0500 commit: wip
|
||
< bbc881a913ab1c924762f6360f6c87f90a49bc7f 0f3bcab1477f591f4445d4ae3087e384f607db88 Your Name <you@example.com> 1714334440 -0500 commit: wip
|
||
< 0f3bcab1477f591f4445d4ae3087e384f607db88 7c118edb76f6a9d861626bcf214ec838932b8fc5 Your Name <you@example.com> 1714334651 -0500 commit: wip
|
||
< 7c118edb76f6a9d861626bcf214ec838932b8fc5 96dcadfb7e891748d576297fe504cdd58e481a1d Your Name <you@example.com> 1714335195 -0500 commit: wip
|
||
< 96dcadfb7e891748d576297fe504cdd58e481a1d 7bcb838017943e81ed50fa7c5bfa5fccf9056791 Your Name <you@example.com> 1714335309 -0500 commit: wip
|
||
< 7bcb838017943e81ed50fa7c5bfa5fccf9056791 244b27e467e37c258bb2dce3112755ee216bc527 Your Name <you@example.com> 1714335623 -0500 commit: wip
|
||
< 244b27e467e37c258bb2dce3112755ee216bc527 0ec0d8368fce836cbefc5cdeadf9e3333e77fd35 Your Name <you@example.com> 1714337073 -0500 commit: wip
|
||
< 0ec0d8368fce836cbefc5cdeadf9e3333e77fd35 0ed3fb31e860bf68b0dd253356941c274dd9ab04 Your Name <you@example.com> 1714337644 -0500 commit: wip
|
||
< 0ed3fb31e860bf68b0dd253356941c274dd9ab04 14adade45e19ffaf2769b93df33ca7c04803d446 Your Name <you@example.com> 1714337853 -0500 commit: wip
|
||
< 14adade45e19ffaf2769b93df33ca7c04803d446 08e52cce7ff75f127cf9d03d97687ee087a148f1 Your Name <you@example.com> 1714338014 -0500 commit: wip
|
||
< 08e52cce7ff75f127cf9d03d97687ee087a148f1 80b75ca9cfa6fd1e5a047bf560e21a9a29e64242 Your Name <you@example.com> 1714347063 -0500 commit: wip
|
||
< 80b75ca9cfa6fd1e5a047bf560e21a9a29e64242 a40c766deac1d6bce1ea7ff8e5c5c3ab05f5a04b Your Name <you@example.com> 1714347143 -0500 commit: wip
|
||
< a40c766deac1d6bce1ea7ff8e5c5c3ab05f5a04b e92a8ae6f8f09ace8c4a8f2517c324c679e7f624 Your Name <you@example.com> 1714348496 -0500 commit: wip
|
||
< e92a8ae6f8f09ace8c4a8f2517c324c679e7f624 e3eeb293db5cf5eb2cd83757cc25efa59d1e7bfd Your Name <you@example.com> 1714348593 -0500 commit: wip
|
||
< e3eeb293db5cf5eb2cd83757cc25efa59d1e7bfd 68c29c684266d38e30763614a5557d80d326f6c3 Your Name <you@example.com> 1714368211 -0500 commit: wip
|
||
< 68c29c684266d38e30763614a5557d80d326f6c3 2c575dae830b1ab71864cd11d39a74a77c7c4877 Your Name <you@example.com> 1714411692 -0500 commit: wip
|
||
< 2c575dae830b1ab71864cd11d39a74a77c7c4877 406a29796e79ccc7fa7e4d32a8326daff3f2586a Your Name <you@example.com> 1714412026 -0500 commit: wip
|
||
< 406a29796e79ccc7fa7e4d32a8326daff3f2586a 1f340a499622e57c6c4fc11c608964aad2216fbf Your Name <you@example.com> 1714412102 -0500 commit: wip
|
||
< 1f340a499622e57c6c4fc11c608964aad2216fbf f4145d48e62f22d07ba162b04050604d73c9d7bb Your Name <you@example.com> 1714413327 -0500 commit: wip
|
||
< f4145d48e62f22d07ba162b04050604d73c9d7bb 6a39c30cc0904d251f1b12af30078230d5027f71 Your Name <you@example.com> 1714414755 -0500 commit: wip
|
||
< 6a39c30cc0904d251f1b12af30078230d5027f71 17a4045ee57878676a4354826552e0b57af90cbf Your Name <you@example.com> 1714414985 -0500 commit: wip
|
||
< 17a4045ee57878676a4354826552e0b57af90cbf 3fb1bac8f8057c0281322b2bc2a98124e0ffea10 Your Name <you@example.com> 1714416721 -0500 commit: wip
|
||
< 3fb1bac8f8057c0281322b2bc2a98124e0ffea10 1847dc78e3f1ea7d57ccc81211d84f42859811d2 Your Name <you@example.com> 1714437622 -0500 commit: wip
|
||
< 1847dc78e3f1ea7d57ccc81211d84f42859811d2 5d3d2d7a39b272fe7049bf1304574f9f963b8efb Your Name <you@example.com> 1714437886 -0500 commit: wip
|
||
< 5d3d2d7a39b272fe7049bf1304574f9f963b8efb e3b5a88027a24d57e60352f5af2b53008a75256a Your Name <you@example.com> 1714438740 -0500 commit: wip
|
||
< e3b5a88027a24d57e60352f5af2b53008a75256a 3733baa6712cc70ac379350464d6f4db0af5cbd8 Your Name <you@example.com> 1714438940 -0500 commit: wip
|
||
< 3733baa6712cc70ac379350464d6f4db0af5cbd8 0e229c0b6d29c5059edd65aa9c687def6731fbd3 Your Name <you@example.com> 1714490830 -0500 commit: wip
|
||
< 0e229c0b6d29c5059edd65aa9c687def6731fbd3 95a98a8fe865f1ecec820010243ae74844546b02 Your Name <you@example.com> 1714501353 -0500 commit: wip
|
||
< 95a98a8fe865f1ecec820010243ae74844546b02 c55a879968c80b803a561496075f38a2fc4d5e9a Your Name <you@example.com> 1714630071 -0500 commit: wip
|
||
< c55a879968c80b803a561496075f38a2fc4d5e9a 98751c5a5b17fa7a350b0e479704c20da56ad98e concordia <concordia> 1714691671 -0500 commit: wip
|
||
< 98751c5a5b17fa7a350b0e479704c20da56ad98e 7fa4ca62a81e431cdd069b4bf2167720f9ed5ab7 Your Name <you@example.com> 1714692143 -0500 commit: wip
|
||
< 7fa4ca62a81e431cdd069b4bf2167720f9ed5ab7 a22c5ca6767e886f42fc392014d60bc169da3855 Your Name <you@example.com> 1714692670 -0500 commit: wip
|
||
< a22c5ca6767e886f42fc392014d60bc169da3855 76f445636d1ac36d6ea6e5f192bd59c602fcf275 Your Name <you@example.com> 1714693513 -0500 commit: wip
|
||
< 76f445636d1ac36d6ea6e5f192bd59c602fcf275 9a76e175699a863ec2125a9bff37b4e6890e89c7 Your Name <you@example.com> 1714694761 -0500 commit: wip
|
||
< 9a76e175699a863ec2125a9bff37b4e6890e89c7 7ff225b87a829fb3470a538ae3f65cd5af90010a Your Name <you@example.com> 1714694780 -0500 commit: wip
|
||
< 7ff225b87a829fb3470a538ae3f65cd5af90010a 3e8215406e591eedd11c22a4cc764b1db492bde6 Your Name <you@example.com> 1714694876 -0500 commit: wip
|
||
< 3e8215406e591eedd11c22a4cc764b1db492bde6 3bab3c881091175e564fdbf6134c2f8b539d6680 Your Name <you@example.com> 1714695051 -0500 commit: wip
|
||
< 3bab3c881091175e564fdbf6134c2f8b539d6680 141af97aa665a9d3db155712bd85c2f28c02632d Your Name <you@example.com> 1714695317 -0500 commit: wip
|
||
< 141af97aa665a9d3db155712bd85c2f28c02632d 63d44d21a1f0bd8a88b829a2bdb2882538abb1c4 Your Name <you@example.com> 1714695949 -0500 commit: wip
|
||
< 63d44d21a1f0bd8a88b829a2bdb2882538abb1c4 1ce0b6abc6029dfdbd16e60f81bb0c7e1bdf3e84 Your Name <you@example.com> 1714696685 -0500 commit: wip
|
||
< 1ce0b6abc6029dfdbd16e60f81bb0c7e1bdf3e84 132171d23b6034abf4f9a9478f6f2b2d49aad3dc Your Name <you@example.com> 1714697265 -0500 commit: wip
|
||
< 132171d23b6034abf4f9a9478f6f2b2d49aad3dc 1b13eaf1ebd0949d2cfed436a568aeef118e1611 Your Name <you@example.com> 1714698993 -0500 commit: wip
|
||
< 1b13eaf1ebd0949d2cfed436a568aeef118e1611 7f42a4ba2889ad6b047adf6c5c817c3fb154a59c Your Name <you@example.com> 1714699134 -0500 commit: wip
|
||
< 7f42a4ba2889ad6b047adf6c5c817c3fb154a59c fd0029be6c51669b79ff69ba3ea82e303ea68df0 Your Name <you@example.com> 1714699823 -0500 commit: wip
|
||
< fd0029be6c51669b79ff69ba3ea82e303ea68df0 f0c82bf2d27bc61e04d33ed70b96e9ed3500366c Your Name <you@example.com> 1714699953 -0500 commit: wip
|
||
< f0c82bf2d27bc61e04d33ed70b96e9ed3500366c 526612b2bfc0eab9e47431e0b60af1ea86d8bfb3 Your Name <you@example.com> 1714700111 -0500 commit: wip
|
||
< 526612b2bfc0eab9e47431e0b60af1ea86d8bfb3 0f7aa64d3be020c2ffcdfe672c88535520c8ca20 Your Name <you@example.com> 1714700240 -0500 commit: wip
|
||
< 0f7aa64d3be020c2ffcdfe672c88535520c8ca20 dc561e3c2dd69f198f14c392f43fd8db73fec9fa concordia <concordia> 1714702147 -0500 commit: wip
|
||
< dc561e3c2dd69f198f14c392f43fd8db73fec9fa f56042fcb9656e111c90be4d42ba579e4c7eb435 concordia <concordia> 1714702943 -0500 commit: wip
|
||
< f56042fcb9656e111c90be4d42ba579e4c7eb435 00f797f931c97239797558595b5979da3f859c56 concordia <concordia> 1714703350 -0500 commit: wip
|
||
< 00f797f931c97239797558595b5979da3f859c56 84088529661307af53964d4d03d9d0131faf22a8 Your Name <you@example.com> 1714704251 -0500 commit: wip
|
||
< 84088529661307af53964d4d03d9d0131faf22a8 e2cde8e886eb9160fc4645c75d0738e96b88e33a Your Name <you@example.com> 1714704353 -0500 commit: wip
|
||
< e2cde8e886eb9160fc4645c75d0738e96b88e33a 7ca074cd79a9792da3b6f64d440fc29098f63def Your Name <you@example.com> 1714708048 -0500 commit: wip
|
||
< 7ca074cd79a9792da3b6f64d440fc29098f63def 98f79c0c1fc3cdc48d4a10bd11f879e721b2dada Your Name <you@example.com> 1714709570 -0500 commit: wip
|
||
< 98f79c0c1fc3cdc48d4a10bd11f879e721b2dada ba9a9f4cf11e51c8fab6d1e7ab2f3683d227a7e3 Your Name <you@example.com> 1714709707 -0500 commit: wip
|
||
< ba9a9f4cf11e51c8fab6d1e7ab2f3683d227a7e3 93bf01f185c8c9c2922199687568e7808c0bc452 Your Name <you@example.com> 1714709856 -0500 commit: wip
|
||
< 93bf01f185c8c9c2922199687568e7808c0bc452 b94be3e23e50547295308d94aa1d5aa313ad15fc Your Name <you@example.com> 1714709974 -0500 commit: wip
|
||
< b94be3e23e50547295308d94aa1d5aa313ad15fc 02513c94c69fc99c20eef9cc392558491bb520a1 Your Name <you@example.com> 1714716767 -0500 commit: wip
|
||
---
|
||
> 0000000000000000000000000000000000000000 e4de63a35195e574622e80aa883d9f04623ab541 Your Name <you@example.com> 1714204857 -0500 clone: from https://github.com/FrogAi/FrogPilot.git
|
||
> e4de63a35195e574622e80aa883d9f04623ab541 e4de63a35195e574622e80aa883d9f04623ab541 Your Name <you@example.com> 1714205412 -0500 reset: moving to HEAD
|
||
> e4de63a35195e574622e80aa883d9f04623ab541 e4de63a35195e574622e80aa883d9f04623ab541 Your Name <you@example.com> 1714205492 -0500 reset: moving to HEAD
|
||
> e4de63a35195e574622e80aa883d9f04623ab541 94a74b730977180f1d2f14c0c4c5c822867a6961 Your Name <you@example.com> 1714205500 -0500 commit: foo
|
||
> 94a74b730977180f1d2f14c0c4c5c822867a6961 f01126e52b95fb979ef25f43f7b6d1053da2aa5f Your Name <you@example.com> 1714205506 -0500 checkout: moving from FrogPilot to FrogPilot-Development
|
||
> f01126e52b95fb979ef25f43f7b6d1053da2aa5f 8eb522021d8567d4f3dbdb8197098d479b142af6 Your Name <you@example.com> 1714716867 -0500 pull origin FrogPilot-Development --rebase (start): checkout 8eb522021d8567d4f3dbdb8197098d479b142af6
|
||
> 8eb522021d8567d4f3dbdb8197098d479b142af6 8eb522021d8567d4f3dbdb8197098d479b142af6 Your Name <you@example.com> 1714716867 -0500 pull origin FrogPilot-Development --rebase (finish): returning to refs/heads/FrogPilot-Development
|
||
Only in clearpilot/.git/logs/refs/heads: clearpilot
|
||
Only in FrogPilot/.git/logs/refs/heads: FrogPilot
|
||
Only in FrogPilot/.git/logs/refs/heads: FrogPilot-Development
|
||
Only in clearpilot/.git/logs/refs/remotes/origin: clearpilot
|
||
Only in FrogPilot/.git/logs/refs/remotes/origin: FrogPilot-Development
|
||
diff -r clearpilot/.git/logs/refs/remotes/origin/HEAD FrogPilot/.git/logs/refs/remotes/origin/HEAD
|
||
1c1
|
||
< 0000000000000000000000000000000000000000 38ae44ed4e9aeba444cc9483a380efb267f49732 Your Name <you@example.com> 1714240831 -0500 clone: from privategit.hanson.xyz:brianhansonxyz/clearpilot.git
|
||
---
|
||
> 0000000000000000000000000000000000000000 e4de63a35195e574622e80aa883d9f04623ab541 Your Name <you@example.com> 1714204857 -0500 clone: from https://github.com/FrogAi/FrogPilot.git
|
||
Only in FrogPilot/.git/logs/refs: stash
|
||
Only in clearpilot/.git/objects: 00
|
||
Only in FrogPilot/.git/objects/01: 5f032cfaeed5f3a54756506615fd89b5062f20
|
||
Only in clearpilot/.git/objects/01: 5f42544f6d8a40fe8e6ad83ce2543f1384b91a
|
||
Only in clearpilot/.git/objects/01: 9352754cd621061866abe80d307bef41e892bd
|
||
Only in clearpilot/.git/objects/01: b40bd7f28e875c7b1077f15ebb5b3cbf1e6f54
|
||
Only in clearpilot/.git/objects/01: d6ffb6d9ca04ceeaffec4311ff226fb87a19e7
|
||
Only in clearpilot/.git/objects: 02
|
||
Only in clearpilot/.git/objects/03: 7ed8d8fa6c7a255ab57094d7792378ab894a81
|
||
Only in FrogPilot/.git/objects/03: 91c5e908e3d61ee00b78b11ee6e4391c520992
|
||
Only in clearpilot/.git/objects/03: a0b789d4e606b0442a537e353d8e4dd331206f
|
||
Only in clearpilot/.git/objects/03: df2c91b1b85783e3ec43369152876c8be5b1f0
|
||
Only in clearpilot/.git/objects: 04
|
||
Only in clearpilot/.git/objects: 05
|
||
Only in clearpilot/.git/objects: 06
|
||
Only in clearpilot/.git/objects: 07
|
||
Only in clearpilot/.git/objects: 08
|
||
Only in clearpilot/.git/objects: 0a
|
||
Only in clearpilot/.git/objects: 0b
|
||
Only in clearpilot/.git/objects: 0c
|
||
Only in clearpilot/.git/objects: 0d
|
||
Only in clearpilot/.git/objects: 0e
|
||
Only in clearpilot/.git/objects: 0f
|
||
Only in clearpilot/.git/objects: 10
|
||
Only in clearpilot/.git/objects: 11
|
||
Only in clearpilot/.git/objects: 12
|
||
Only in clearpilot/.git/objects: 13
|
||
Only in clearpilot/.git/objects: 14
|
||
Only in clearpilot/.git/objects: 15
|
||
Only in clearpilot/.git/objects: 16
|
||
Only in clearpilot/.git/objects: 17
|
||
Only in clearpilot/.git/objects: 18
|
||
Only in clearpilot/.git/objects: 19
|
||
Only in clearpilot/.git/objects: 1a
|
||
Only in clearpilot/.git/objects: 1b
|
||
Only in clearpilot/.git/objects: 1c
|
||
Only in clearpilot/.git/objects: 1d
|
||
Only in clearpilot/.git/objects: 1e
|
||
Only in clearpilot/.git/objects: 1f
|
||
Only in clearpilot/.git/objects: 20
|
||
Only in clearpilot/.git/objects: 21
|
||
Only in clearpilot/.git/objects: 22
|
||
Only in clearpilot/.git/objects: 23
|
||
Only in clearpilot/.git/objects: 24
|
||
Only in clearpilot/.git/objects: 25
|
||
Only in clearpilot/.git/objects: 26
|
||
Only in clearpilot/.git/objects: 27
|
||
Only in clearpilot/.git/objects: 28
|
||
Only in clearpilot/.git/objects: 29
|
||
Only in clearpilot/.git/objects: 2a
|
||
Only in clearpilot/.git/objects: 2b
|
||
Only in clearpilot/.git/objects: 2c
|
||
Only in clearpilot/.git/objects: 2d
|
||
Only in clearpilot/.git/objects: 2e
|
||
Only in clearpilot/.git/objects: 2f
|
||
Only in clearpilot/.git/objects: 30
|
||
Only in clearpilot/.git/objects: 32
|
||
Only in clearpilot/.git/objects: 33
|
||
Only in clearpilot/.git/objects: 34
|
||
Only in clearpilot/.git/objects: 35
|
||
Only in clearpilot/.git/objects: 36
|
||
Only in clearpilot/.git/objects: 37
|
||
Only in clearpilot/.git/objects: 38
|
||
Only in clearpilot/.git/objects: 39
|
||
Only in clearpilot/.git/objects: 3a
|
||
Only in clearpilot/.git/objects: 3b
|
||
Only in clearpilot/.git/objects: 3c
|
||
Only in clearpilot/.git/objects: 3d
|
||
Only in clearpilot/.git/objects: 3e
|
||
Only in clearpilot/.git/objects: 3f
|
||
Only in clearpilot/.git/objects: 40
|
||
Only in clearpilot/.git/objects: 41
|
||
Only in clearpilot/.git/objects: 42
|
||
Only in clearpilot/.git/objects: 43
|
||
Only in clearpilot/.git/objects: 44
|
||
Only in clearpilot/.git/objects: 45
|
||
Only in clearpilot/.git/objects: 46
|
||
Only in clearpilot/.git/objects: 47
|
||
Only in clearpilot/.git/objects: 48
|
||
Only in clearpilot/.git/objects: 49
|
||
Only in clearpilot/.git/objects: 4a
|
||
Only in clearpilot/.git/objects: 4b
|
||
Only in clearpilot/.git/objects: 4c
|
||
Only in clearpilot/.git/objects: 4d
|
||
Only in clearpilot/.git/objects: 4e
|
||
Only in clearpilot/.git/objects: 4f
|
||
Only in clearpilot/.git/objects: 50
|
||
Only in clearpilot/.git/objects: 51
|
||
Only in clearpilot/.git/objects: 52
|
||
Only in clearpilot/.git/objects: 53
|
||
Only in clearpilot/.git/objects: 54
|
||
Only in clearpilot/.git/objects: 55
|
||
Only in clearpilot/.git/objects: 56
|
||
Only in clearpilot/.git/objects: 57
|
||
Only in clearpilot/.git/objects: 58
|
||
Only in clearpilot/.git/objects/59: 1c1ce7ca6d04827d67619f20df0877dbfc9883
|
||
Only in clearpilot/.git/objects/59: 3909894a527f108ce9eb62812eb8fc313e78d6
|
||
Only in clearpilot/.git/objects/59: 3b8f0ea0b9ac037dc11d550e497b830e237a5f
|
||
Only in clearpilot/.git/objects/59: 420547570b0e2269d28f02b83569d115628abf
|
||
Only in clearpilot/.git/objects/59: 7ea17f0c3182ddeb4dcccc5f0f11aeaa1ca1d8
|
||
Only in clearpilot/.git/objects/59: 9ab310591bb35fbf1d6ad9e7dccbcafef8d1a1
|
||
Only in clearpilot/.git/objects/59: c1827d1ce3ca23cb23145ef6e4a51ccc3bda12
|
||
Only in clearpilot/.git/objects/59: c5ea56151feb0ff502dde9d3c8277a7c407b4d
|
||
Only in FrogPilot/.git/objects/59: efe0a5dd89dc1feba54fb0592003cd622090b1
|
||
Only in clearpilot/.git/objects: 5a
|
||
Only in clearpilot/.git/objects: 5b
|
||
Only in clearpilot/.git/objects: 5c
|
||
Only in clearpilot/.git/objects: 5d
|
||
Only in clearpilot/.git/objects: 5e
|
||
Only in clearpilot/.git/objects: 5f
|
||
Only in clearpilot/.git/objects: 60
|
||
Only in clearpilot/.git/objects: 61
|
||
Only in clearpilot/.git/objects: 62
|
||
Only in clearpilot/.git/objects: 63
|
||
Only in clearpilot/.git/objects: 64
|
||
Only in FrogPilot/.git/objects/65: 13f1219304b040fb3f63116a1eab92946017b9
|
||
Only in clearpilot/.git/objects/65: 27ec3ff7299b249878ba9d82427100ffeea2cb
|
||
Only in clearpilot/.git/objects/65: 5645dd6816da0c873a6a8efe9f5618cea4265e
|
||
Only in clearpilot/.git/objects/65: 628c15256492ecde0645debfaec47a646407ad
|
||
Only in clearpilot/.git/objects/65: a278d2407c1959681cebaa2dbcd9068d7b8473
|
||
Only in FrogPilot/.git/objects/65: f53d6b7887e15ac5f852c465fa9192190c3673
|
||
Only in clearpilot/.git/objects: 66
|
||
Only in clearpilot/.git/objects: 67
|
||
Only in clearpilot/.git/objects: 68
|
||
Only in clearpilot/.git/objects: 69
|
||
Only in clearpilot/.git/objects: 6a
|
||
Only in clearpilot/.git/objects: 6b
|
||
Only in clearpilot/.git/objects: 6c
|
||
Only in clearpilot/.git/objects: 6d
|
||
Only in clearpilot/.git/objects: 6e
|
||
Only in clearpilot/.git/objects: 6f
|
||
Only in clearpilot/.git/objects: 70
|
||
Only in clearpilot/.git/objects: 71
|
||
Only in clearpilot/.git/objects/72: 48a75e011f8ae5a799344151e46820677ae2be
|
||
Only in clearpilot/.git/objects/72: 742656f34be035f94fd7f4460a721beafeacc6
|
||
Only in FrogPilot/.git/objects/72: a1019a1efa1ca05936953dfc6583486edbd333
|
||
Only in clearpilot/.git/objects/72: c9ef1b3dee40e8dcee70d302f826b042cee9bb
|
||
Only in clearpilot/.git/objects/72: d26ebd6c95c40ca97f00b6136161fcf3b145dc
|
||
Only in clearpilot/.git/objects/72: e8bd8589bc2b5b6ef88e6559f177814e30b12f
|
||
Only in clearpilot/.git/objects: 73
|
||
Only in clearpilot/.git/objects: 74
|
||
Only in clearpilot/.git/objects: 75
|
||
Only in clearpilot/.git/objects: 76
|
||
Only in clearpilot/.git/objects: 77
|
||
Only in clearpilot/.git/objects: 78
|
||
Only in clearpilot/.git/objects: 79
|
||
Only in clearpilot/.git/objects: 7a
|
||
Only in clearpilot/.git/objects: 7b
|
||
Only in clearpilot/.git/objects: 7c
|
||
Only in clearpilot/.git/objects: 7d
|
||
Only in clearpilot/.git/objects: 7e
|
||
Only in clearpilot/.git/objects: 7f
|
||
Only in clearpilot/.git/objects: 80
|
||
Only in clearpilot/.git/objects: 81
|
||
Only in clearpilot/.git/objects: 82
|
||
Only in clearpilot/.git/objects: 83
|
||
Only in clearpilot/.git/objects: 84
|
||
Only in clearpilot/.git/objects: 85
|
||
Only in clearpilot/.git/objects: 86
|
||
Only in FrogPilot/.git/objects/87: 4137efc71cc54bf79e467f584dac9517a1a6dd
|
||
Only in clearpilot/.git/objects/87: 45fefc124b0e386a3ed358b003751a28a78caf
|
||
Only in clearpilot/.git/objects/87: 532f5834f9bc37358923e07f854ebcfb3c6c53
|
||
Only in clearpilot/.git/objects/87: 98d62b9361fa8130d57fcf420ecc2a4cde256d
|
||
Only in clearpilot/.git/objects/87: 9e6eebca749819ad39c88a4a1b892229d38421
|
||
Only in clearpilot/.git/objects: 88
|
||
Only in clearpilot/.git/objects: 89
|
||
Only in clearpilot/.git/objects: 8a
|
||
Only in clearpilot/.git/objects: 8b
|
||
Only in clearpilot/.git/objects: 8c
|
||
Only in clearpilot/.git/objects: 8d
|
||
Only in clearpilot/.git/objects: 8e
|
||
Only in clearpilot/.git/objects: 8f
|
||
Only in clearpilot/.git/objects: 90
|
||
Only in clearpilot/.git/objects: 91
|
||
Only in clearpilot/.git/objects: 92
|
||
Only in clearpilot/.git/objects: 93
|
||
Only in clearpilot/.git/objects/94: 2199790a4e2b9a864c7ad5ec0a86e2f2a36e9a
|
||
Only in clearpilot/.git/objects/94: 366eb65193072c8baba6caaac593f850bfd8d3
|
||
Only in clearpilot/.git/objects/94: 895285df02d78d5c60c6e392e56b88d40ecd97
|
||
Only in clearpilot/.git/objects/94: 96892f29e06d18bdd85993ff4a4bc845bf6a7f
|
||
Only in FrogPilot/.git/objects/94: a74b730977180f1d2f14c0c4c5c822867a6961
|
||
Only in clearpilot/.git/objects/94: b32a9f761b133602984025b1126969dec4c0eb
|
||
Only in clearpilot/.git/objects/94: ce26eb4797d1b6aeda4321fee9e6422786e0bd
|
||
Only in clearpilot/.git/objects/94: e9d309d62e792548425e83f1337899bd73a1b0
|
||
Only in clearpilot/.git/objects/94: ea031dad857a35d835e990236496c3303a7fa1
|
||
Only in clearpilot/.git/objects: 95
|
||
Only in clearpilot/.git/objects: 96
|
||
Only in clearpilot/.git/objects: 97
|
||
Only in clearpilot/.git/objects: 98
|
||
Only in clearpilot/.git/objects/99: 30ea8bd5cc7b41e73bf8a62287551c4b63ae5a
|
||
Only in FrogPilot/.git/objects/99: b1cfa50c94621a5fa05bc6e38a03b4d384b831
|
||
Only in clearpilot/.git/objects: 9a
|
||
Only in clearpilot/.git/objects: 9b
|
||
Only in clearpilot/.git/objects: 9c
|
||
Only in clearpilot/.git/objects: 9d
|
||
Only in clearpilot/.git/objects: 9e
|
||
Only in clearpilot/.git/objects: 9f
|
||
Only in clearpilot/.git/objects: a0
|
||
Only in clearpilot/.git/objects: a1
|
||
Only in clearpilot/.git/objects: a2
|
||
Only in clearpilot/.git/objects: a3
|
||
Only in clearpilot/.git/objects: a4
|
||
Only in clearpilot/.git/objects: a5
|
||
Only in clearpilot/.git/objects/a6: 1da9fd98f3e685e0e39a47d3c41b8a8688ae23
|
||
Only in FrogPilot/.git/objects/a6: 710a71ab0b70f91e9cf3fbc2c8d7bf282faa1e
|
||
Only in clearpilot/.git/objects/a6: 9625930505ac144429fa4221483adba54406af
|
||
Only in clearpilot/.git/objects/a6: a7f0da1b93426f77424e8e2b8a194c0465afb3
|
||
Only in clearpilot/.git/objects/a6: be2cd1057cc7e286e606c32b401c14203d8862
|
||
Only in clearpilot/.git/objects/a6: c4c7179032e5711d1f177f152c11918a85311d
|
||
Only in clearpilot/.git/objects/a6: e28fb892f5d0c26a54f185526273fb2e636938
|
||
Only in clearpilot/.git/objects/a6: e8bc32400650d7bb4d4b6e9d3f4cab84c83c09
|
||
Only in clearpilot/.git/objects: a7
|
||
Only in clearpilot/.git/objects: a8
|
||
Only in clearpilot/.git/objects: a9
|
||
Only in clearpilot/.git/objects: aa
|
||
Only in clearpilot/.git/objects: ab
|
||
Only in clearpilot/.git/objects: ac
|
||
Only in clearpilot/.git/objects: ad
|
||
Only in clearpilot/.git/objects: ae
|
||
Only in clearpilot/.git/objects: af
|
||
Only in clearpilot/.git/objects: b1
|
||
Only in clearpilot/.git/objects: b2
|
||
Only in clearpilot/.git/objects: b3
|
||
Only in clearpilot/.git/objects: b4
|
||
Only in clearpilot/.git/objects: b5
|
||
Only in clearpilot/.git/objects: b6
|
||
Only in clearpilot/.git/objects: b7
|
||
Only in clearpilot/.git/objects: b8
|
||
Only in clearpilot/.git/objects: b9
|
||
Only in clearpilot/.git/objects: ba
|
||
Only in clearpilot/.git/objects: bb
|
||
Only in clearpilot/.git/objects: bc
|
||
Only in clearpilot/.git/objects: bd
|
||
Only in clearpilot/.git/objects: be
|
||
Only in clearpilot/.git/objects: bf
|
||
Only in clearpilot/.git/objects: c0
|
||
Only in clearpilot/.git/objects: c1
|
||
Only in clearpilot/.git/objects: c2
|
||
Only in clearpilot/.git/objects: c3
|
||
Only in clearpilot/.git/objects: c4
|
||
Only in clearpilot/.git/objects: c5
|
||
Only in clearpilot/.git/objects: c6
|
||
Only in clearpilot/.git/objects: c7
|
||
Only in clearpilot/.git/objects: c8
|
||
Only in clearpilot/.git/objects: c9
|
||
Only in clearpilot/.git/objects: ca
|
||
Only in clearpilot/.git/objects: cb
|
||
Only in clearpilot/.git/objects: cc
|
||
Only in clearpilot/.git/objects/cd: 3b0f90fee6010a33d3e8d8b3e6c52dbffebc85
|
||
Only in clearpilot/.git/objects/cd: 537fb05ba7dbb38bfca9c54039a8287bdff79c
|
||
Only in FrogPilot/.git/objects/cd: 84e55593a4cd391b49004b0e0d2dc940001e03
|
||
Only in clearpilot/.git/objects/cd: 89d29889fc24172eabd8cf5e85414e5f448105
|
||
Only in clearpilot/.git/objects/cd: 9920f63b7e6dc333f18ab0ec11132e1eda229b
|
||
Only in clearpilot/.git/objects/cd: a030b6dc0d92dd734b8032cb87eedb69394048
|
||
Only in clearpilot/.git/objects/cd: cea247784e246e7c33208517de5d69fda09b9b
|
||
Only in clearpilot/.git/objects/cd: dab2ec0dcc9e12b66ab5978875637f4981aa8e
|
||
Only in clearpilot/.git/objects/cd: f9b211dd8a2fe1046fdc375889804783a12f8d
|
||
Only in clearpilot/.git/objects: ce
|
||
Only in clearpilot/.git/objects: cf
|
||
Only in clearpilot/.git/objects: d0
|
||
Only in clearpilot/.git/objects: d1
|
||
Only in clearpilot/.git/objects: d3
|
||
Only in clearpilot/.git/objects: d4
|
||
Only in clearpilot/.git/objects: d5
|
||
Only in clearpilot/.git/objects: d6
|
||
Only in clearpilot/.git/objects/d7: 380bb75f782709f4cd568b74c4959e1e94a8b7
|
||
Only in clearpilot/.git/objects/d7: 5d1ec133152dd2c47f7146b99f3a7c150e4782
|
||
Only in clearpilot/.git/objects/d7: 9604087836d9bbb3c7e96a48438e9abdec6d28
|
||
Only in clearpilot/.git/objects/d7: c5e98d2d44fcf4ed69efc0138df220dec19106
|
||
Only in FrogPilot/.git/objects/d7: d70f928be351a904f8cc3a54a713a72cb39403
|
||
Only in clearpilot/.git/objects: d8
|
||
Only in clearpilot/.git/objects: d9
|
||
Only in clearpilot/.git/objects: da
|
||
Only in clearpilot/.git/objects: db
|
||
Only in clearpilot/.git/objects: dc
|
||
Only in clearpilot/.git/objects: dd
|
||
Only in clearpilot/.git/objects: de
|
||
Only in clearpilot/.git/objects: df
|
||
Only in clearpilot/.git/objects: e0
|
||
Only in clearpilot/.git/objects: e1
|
||
Only in clearpilot/.git/objects: e2
|
||
Only in clearpilot/.git/objects: e3
|
||
Only in clearpilot/.git/objects: e4
|
||
Only in clearpilot/.git/objects: e5
|
||
Only in clearpilot/.git/objects: e6
|
||
Only in clearpilot/.git/objects: e7
|
||
Only in clearpilot/.git/objects: e8
|
||
Only in clearpilot/.git/objects: e9
|
||
Only in clearpilot/.git/objects/ea: 1aad5ed1423f3b88647d799b8d808199408328
|
||
Only in clearpilot/.git/objects/ea: 1e88e26ba1e1c4d3642cdd03717c507a47e4c7
|
||
Only in clearpilot/.git/objects/ea: 291d7633d4acf704e9af1cd15813aac56b5e58
|
||
Only in clearpilot/.git/objects/ea: 38a4191e5c0d3d9d1bab54bd5ba18bff7be644
|
||
Only in FrogPilot/.git/objects/ea: 3ff939a04704b7a3a02320c5507e73dfdcfbf5
|
||
Only in clearpilot/.git/objects/ea: 4692cc720e66f4bc179c32b96ab1eb2eb9c5ce
|
||
Only in clearpilot/.git/objects/ea: 639e7fbc23e323694a22712a4d43ade89461aa
|
||
Only in clearpilot/.git/objects/ea: 8710c4fd328616df5ec1436dff97c6c3b60f7e
|
||
Only in clearpilot/.git/objects/ea: 8d898f90858b880c2e139bad9085986557e870
|
||
Only in clearpilot/.git/objects/ea: f9002dcd61d9bb5b2cf05a75c4321c59e3d81b
|
||
Only in clearpilot/.git/objects/ea: ff21dfc95fc27a1ae794ea806187f658452ea8
|
||
Only in clearpilot/.git/objects: eb
|
||
Only in clearpilot/.git/objects: ec
|
||
Only in clearpilot/.git/objects: ed
|
||
Only in clearpilot/.git/objects: ee
|
||
Only in clearpilot/.git/objects: ef
|
||
Only in clearpilot/.git/objects: f0
|
||
Only in clearpilot/.git/objects: f1
|
||
Only in clearpilot/.git/objects: f2
|
||
Only in clearpilot/.git/objects: f3
|
||
Only in clearpilot/.git/objects: f4
|
||
Only in clearpilot/.git/objects: f5
|
||
Only in clearpilot/.git/objects: f6
|
||
Only in clearpilot/.git/objects: f8
|
||
Only in FrogPilot/.git/objects/f9: 6ec1a8358556543a73b3fb93a0d1c2aad8432a
|
||
Only in clearpilot/.git/objects/f9: 948e663f3aa31c88bdbac2a16316cbff38c2b7
|
||
Only in clearpilot/.git/objects/f9: 9a846db3ca25e5efa5b85ce510886d3d3b21df
|
||
Only in clearpilot/.git/objects/f9: d948344e9707556b1b8e7e404fae7a332ad1ca
|
||
Only in clearpilot/.git/objects: fa
|
||
Only in clearpilot/.git/objects: fb
|
||
Only in clearpilot/.git/objects: fc
|
||
Only in clearpilot/.git/objects: fd
|
||
Only in clearpilot/.git/objects: fe
|
||
Only in clearpilot/.git/objects/ff: 2a77a391b1d52d6449bb5a8c1195ff57fffa07
|
||
Only in FrogPilot/.git/objects/ff: 62d5fcaa825039d6419b86608af84f15e8fae2
|
||
Only in clearpilot/.git/objects/ff: 7538aa64fe2bb187d9a4d9083293ac8797d6a0
|
||
Only in clearpilot/.git/objects/ff: 7893e3e526bdd8aa09ac70dc79a9922b6b1e34
|
||
Only in clearpilot/.git/objects/ff: 987167defc0064c4a559f9612175545edc2d41
|
||
Only in clearpilot/.git/objects/ff: a30b6c925db85ef4a4018a3d26ccfbfcacfc4c
|
||
Only in FrogPilot/.git/objects/pack: pack-0503da4c1fb80d6422e9406b9374af997d8c390c.idx
|
||
Only in FrogPilot/.git/objects/pack: pack-0503da4c1fb80d6422e9406b9374af997d8c390c.pack
|
||
Only in clearpilot/.git/objects/pack: pack-bf005036f4ff5ebfd8068a6f3182d4398ba71542.idx
|
||
Only in clearpilot/.git/objects/pack: pack-bf005036f4ff5ebfd8068a6f3182d4398ba71542.pack
|
||
Only in FrogPilot/.git/objects/pack: pack-c97237f2dedd525298821974ebea80b78d687000.idx
|
||
Only in FrogPilot/.git/objects/pack: pack-c97237f2dedd525298821974ebea80b78d687000.pack
|
||
diff -r clearpilot/.git/ORIG_HEAD FrogPilot/.git/ORIG_HEAD
|
||
1c1
|
||
< 6ebd9e07a181d9304f26546226afa1577996c5a6
|
||
---
|
||
> f01126e52b95fb979ef25f43f7b6d1053da2aa5f
|
||
diff -r clearpilot/.git/packed-refs FrogPilot/.git/packed-refs
|
||
2c2,113
|
||
< 38ae44ed4e9aeba444cc9483a380efb267f49732 refs/remotes/origin/clearpilot
|
||
---
|
||
> e4de63a35195e574622e80aa883d9f04623ab541 refs/remotes/origin/FrogPilot
|
||
> f01126e52b95fb979ef25f43f7b6d1053da2aa5f refs/remotes/origin/FrogPilot-Development
|
||
> 7f8d6d7ceb4f7a57279c95167f202dc0cc910691 refs/remotes/origin/FrogPilot-Old
|
||
> a8e30af82fc1ae641f5f42c2c09cae05a977370b refs/remotes/origin/FrogPilot-Staging
|
||
> 5daf01e3efb898465d58c3c63e41cc8ba4050727 refs/remotes/origin/FrogPilot-Testing
|
||
> 0ac5e5aa1c524b6e288cf8a83da5c56a3d1dbb4f refs/remotes/origin/MAKE-PRS-HERE
|
||
> 718d980ff7ddc23f3325e44acc9f4fc1ab5450db refs/tags/March-15th,-2024
|
||
> 7aedfde644f60a0d69b31017b8e1e8d5fdbbd5fd refs/tags/March-1st,-2024
|
||
> ^99690d9eb1431111531be8731e6f34d0b4c8f42f
|
||
> d247ea118080342eeb835704ad343475a7cd35eb refs/tags/March-29th,-2024
|
||
> c3b4b289e058b1e58206b9bb2938befd4dbed92e refs/tags/v0.1
|
||
> ^e94a30bec07e719c5a7b037ca1f4db8312702cce
|
||
> 142bb58d772e2982f8a78c76df9a9ea9bdfc0b4d refs/tags/v0.2
|
||
> ^449b482cc3236ccf31829830b4f6a44b2dcc06c2
|
||
> 5c985741ef933615a2d8efb58ac21e1a07900192 refs/tags/v0.2.1
|
||
> ^17d9becd3c673091b22f09aa02559a9ed9230f50
|
||
> e8f20b85a8dfcdfdc08a646818fae6a820b9b7f8 refs/tags/v0.2.2
|
||
> ^a64b9aa9b8cb5863c917b6926516291a63c02fe5
|
||
> 867aab9f971f90be0329bef085e3ee05c4a3430e refs/tags/v0.2.3
|
||
> ^adaa4ed350acda4067fc0b455ad15b54cdf4c768
|
||
> 5195cf447267246f6b8ef2bd73074b83dd907614 refs/tags/v0.2.4
|
||
> ^ecc565aa3fdc4c7e719aadc000e1fdc4d80d4fe0
|
||
> 1ac33efa07f6dca8730467207b587029e79416b3 refs/tags/v0.2.5
|
||
> ^29c58b45882ac79595356caf98580c1d2a626011
|
||
> b6632a5973720e7cfdad60109335d7cb4a139360 refs/tags/v0.2.6
|
||
> ^6c3afeec0fb439070b2912978b8dbb659033b1d9
|
||
> 28f35c97c5a1bd6c633478b800c55720a4724907 refs/tags/v0.2.7
|
||
> ^c6ba5dc5391d3ca6cda479bf1923b88ce45509a0
|
||
> a741ed8dcc4e072c18b0fe4d8c6a52f5c9b2f59b refs/tags/v0.2.8
|
||
> ^95a349abcc050712c50d4d85a1c8a804eee7f6c2
|
||
> 429a88db63264bfbf05279fdbc5ca6f7a9f14a04 refs/tags/v0.2.9
|
||
> ^693bcb0f83478f2651db6bac9be5ca5ad60d03f3
|
||
> 19d30f26f18eb8d08d298113eb65a4d8928bb52b refs/tags/v0.3.0
|
||
> ^c5d8aec28b5230d34ae4b677c2091cc3dec7e3e8
|
||
> 36ffe1cdd954448fafece583d2e2f31a437cecf5 refs/tags/v0.3.1
|
||
> ^41e3a0f699f5c39cb61a15c0eb7a4aa816d47c24
|
||
> e21af5cf95ad445954081ef341b4a988f46fea3f refs/tags/v0.3.2
|
||
> ^7fe46f1e1df5dec08a940451ba0feefd5c039165
|
||
> 75538bdcbe7869b10657d31e19f323143afb14d4 refs/tags/v0.3.3
|
||
> ^5cf91d0496688fed4f2a6c7021349b1fc0e057a2
|
||
> 1b8c44b5067525a5d266b6e99799d8097da76a29 refs/tags/v0.3.4
|
||
> b111277f464cf66fa34b67819a83ea683e0f64df refs/tags/v0.3.5
|
||
> 81eea6c40d18d76104285116b0df3934de6dc15f refs/tags/v0.4.0.2
|
||
> ^da52d065a4c4f52d6017a537f3a80326f5af8bdc
|
||
> af68dc5d45025e1c2d3c200bc4a768bd7519f1d5 refs/tags/v0.4.1
|
||
> ^4474b9b3718653aeb0aee26422caefb90460cc0e
|
||
> 786afebde9a5169987464e692d9630d72e645cb9 refs/tags/v0.4.2
|
||
> ^28c0797d30175043bbfa31307b63aab4197cf996
|
||
> 1f16af4fb87520f4d7068850cdedc523b3303e35 refs/tags/v0.4.4
|
||
> ^9a9ff839a9b70cb2601d7696af743f5652395389
|
||
> ac4613fa3b59d6dd82d4f35c5cfcbc881e7ee443 refs/tags/v0.4.5
|
||
> ^37285038d3f91fa1b49159c4a35a8383168e644f
|
||
> 68a4cacd0cc96272b4001c0a6552cea843928e40 refs/tags/v0.4.6
|
||
> ^c6df34f55ba8c5a911b60d3f9eb20e3fa45f68c1
|
||
> 4c94751da8b1e3c38ec136b2a2cf2b80f33974df refs/tags/v0.4.7
|
||
> ^ae5cb7a0dab8b1bed9d52292f9b4e8e66a0f8ec9
|
||
> 207cbcb6e28441a3bde0602cdefafa6f85504b24 refs/tags/v0.5
|
||
> ^de33bc46452b1046387ee2b3a03191b2c71135fb
|
||
> 8f22f52235c48eada586795ac57edb22688e4d08 refs/tags/v0.5.1
|
||
> ff4c1557d8358f158f4358788ff18ef93d2470ef refs/tags/v0.5.10
|
||
> d1866845df423c6855e2b365ff230cf7d89a420b refs/tags/v0.5.11
|
||
> f6e8ef27546e9a406724841e75f8df71cc4c2c97 refs/tags/v0.5.12
|
||
> dd34ccfe288ebda8e2568cf550994ae890379f45 refs/tags/v0.5.13
|
||
> 0129a8a4ff8da5314e8e4d4d3336e89667ff6d54 refs/tags/v0.5.2
|
||
> 285c52eb693265a0a530543e9ca0aeb593a2a55e refs/tags/v0.5.3
|
||
> a422246dc30bce11e970514f13f7c110f4470cc3 refs/tags/v0.5.4
|
||
> 8f3539a27b28851153454eb737da9624cccaed2d refs/tags/v0.5.5
|
||
> 860a48765d1016ba226fb2c64aea35a45fe40e4a refs/tags/v0.5.6
|
||
> 9ce3045f139ee29bf0eea5ec59dfe7df9c3d2c51 refs/tags/v0.5.7
|
||
> 2cee2e05ba0f3824fdbb8b957958800fa99071a1 refs/tags/v0.5.8
|
||
> ad145da3bcded0fe75306df02061d07a633963c3 refs/tags/v0.5.9
|
||
> 60a20537c5f3fcc7f11946d81aebc8f90c08c117 refs/tags/v0.6
|
||
> cf5c4aeacb1703d0ffd35bdb5297d3494fee9a22 refs/tags/v0.6.1
|
||
> 095ef5f9f60fca1b269aabcc3cfd322b17b9e674 refs/tags/v0.6.2
|
||
> d5f9caa82d80cdcc7f1b7748f2cf3ccbf94f82a3 refs/tags/v0.6.3
|
||
> 58f376002e0c654fbc2de127765fa297cf694a33 refs/tags/v0.6.4
|
||
> 70d17cd69b80e7627dcad8fd5b6438f2309ac307 refs/tags/v0.6.5
|
||
> d4eb5a6eafdd4803d09e6f3963918216cca5a81f refs/tags/v0.6.6
|
||
> a2ae18d1dbd1e59c38ce22fa25ddffbd1d3084e3 refs/tags/v0.7
|
||
> 1e1de64a1e59476b7b3d3558b92149246d5c3292 refs/tags/v0.7.1
|
||
> 8369e11417047d8cf7677a995f7f828e214765da refs/tags/v0.7.10
|
||
> 59bd58c940673b4c4a6a86f299022614bcf42b22 refs/tags/v0.7.2
|
||
> 42e0d1338927bd5878e97fd363a9b4ed50cc3486 refs/tags/v0.7.3
|
||
> a5c3340c8dae1d4e3bf0d438661d2dc048b7767e refs/tags/v0.7.4
|
||
> abfe469d95f4f59543d30ec62b6333bf700ae2d6 refs/tags/v0.7.5
|
||
> 9e7fb4680df0d1897fc1c38e0732683e753ce7d3 refs/tags/v0.7.6.1
|
||
> f370bf5ba6ce3dae79cf9268cd433bd5418e4f67 refs/tags/v0.7.7
|
||
> 0aa4867be4fd3b429a0aa467dabb4a8f6ea2eb54 refs/tags/v0.7.8
|
||
> db336329c58234218f9e6183ed235c75adf0d291 refs/tags/v0.7.9
|
||
> 0b384ea101d30c60c14289ab67781ad9ed9a08d4 refs/tags/v0.8
|
||
> 22a41931095721918531376af1f3fc85724fa8f4 refs/tags/v0.8.1
|
||
> 93e8dbb8b5b12990f96e09eb52a7a344bcb5ad5e refs/tags/v0.8.10
|
||
> 1e0ef417c32bcf29cdab9849f104336adae4a540 refs/tags/v0.8.11
|
||
> a965de3c96a53b67d106cfa775e3407db82dd0e1 refs/tags/v0.8.12
|
||
> 86df8e2aad13f4babbdf3be88d4dd3aed633e8f6 refs/tags/v0.8.13
|
||
> ^14adf3afa2a65d2c94be253bea6e3cbf75e47f7f
|
||
> 15ee981d5bfea3d3d22690b7582b28038ed37e3e refs/tags/v0.8.14
|
||
> c5825aed76f24f502b25c58e3e9f29bbcf1d145a refs/tags/v0.8.15
|
||
> 108478216be1c12e1421194736a553fedb45ace0 refs/tags/v0.8.16
|
||
> aed724bedae93b8e8d0410d03532a01762f2ae7b refs/tags/v0.8.2
|
||
> 55c44bf34e4fda95371d2281b392299814a47c1e refs/tags/v0.8.3
|
||
> bf662bb1fd4577728744fefda80f365a087ed603 refs/tags/v0.8.4
|
||
> 0ef3ce173a0addf7d9de7e2ccc80e316789251b7 refs/tags/v0.8.5
|
||
> b201dc19964833c27390569e862e0fb0d38f4e36 refs/tags/v0.8.6
|
||
> 444aace15f56473de082f5a17f0e487468959af2 refs/tags/v0.8.7
|
||
> 58bdb272a747d2003a576c462f0a0957e3a05159 refs/tags/v0.8.8
|
||
> 37192c1aba15eba61b7f335d1861eee8860e1f86 refs/tags/v0.8.9
|
||
> b47ad523a3291fe7729950cb18f2045cdf9ba771 refs/tags/v0.9.0
|
||
> bcd4bb482159cff90f487628887cf4481892f860 refs/tags/v0.9.1
|
||
> cfd8323ccbfe1bab3e7c8cbf055cff94803ab4d1 refs/tags/v0.9.2
|
||
> c39abc00af95b88bcd13d16939e4acca9f8593fc refs/tags/v0.9.3
|
||
> 829e3c96720a62b212dde2dfdd5879186b481d4d refs/tags/v0.9.4
|
||
Only in clearpilot/.git/refs/heads: clearpilot
|
||
Only in FrogPilot/.git/refs/heads: FrogPilot
|
||
Only in FrogPilot/.git/refs/heads: FrogPilot-Development
|
||
Only in clearpilot/.git/refs/remotes/origin: clearpilot
|
||
Only in FrogPilot/.git/refs/remotes/origin: FrogPilot-Development
|
||
diff -r clearpilot/.git/refs/remotes/origin/HEAD FrogPilot/.git/refs/remotes/origin/HEAD
|
||
1c1
|
||
< ref: refs/remotes/origin/clearpilot
|
||
---
|
||
> ref: refs/remotes/origin/FrogPilot
|
||
Only in FrogPilot/.git/refs: stash
|
||
diff -r clearpilot/.github/PULL_REQUEST_TEMPLATE/car_port.md FrogPilot/.github/PULL_REQUEST_TEMPLATE/car_port.md
|
||
11c11
|
||
< - [ ] added entry to CarInfo in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs
|
||
---
|
||
> - [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs
|
||
diff -r clearpilot/.github/pull_request_template.md FrogPilot/.github/pull_request_template.md
|
||
47c47
|
||
< - [ ] added entry to CarInfo in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs
|
||
---
|
||
> - [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs
|
||
diff -r clearpilot/.github/workflows/auto-cache/action.yaml FrogPilot/.github/workflows/auto-cache/action.yaml
|
||
22c22
|
||
< if: ${{ contains(runner.name, 'nsc') }}
|
||
---
|
||
> if: ${{ contains(runner.name, 'nsc') }}
|
||
diff -r clearpilot/.github/workflows/selfdrive_tests.yaml FrogPilot/.github/workflows/selfdrive_tests.yaml
|
||
72c72
|
||
< ((github.event_name != 'pull_request') ||
|
||
---
|
||
> ((github.event_name != 'pull_request') ||
|
||
125c125
|
||
< ((github.event_name != 'pull_request') ||
|
||
---
|
||
> ((github.event_name != 'pull_request') ||
|
||
158c158
|
||
< ((github.event_name != 'pull_request') ||
|
||
---
|
||
> ((github.event_name != 'pull_request') ||
|
||
189c189
|
||
< ((github.event_name != 'pull_request') ||
|
||
---
|
||
> ((github.event_name != 'pull_request') ||
|
||
238c238
|
||
< steps:
|
||
---
|
||
> steps:
|
||
296c296
|
||
< ((github.event_name != 'pull_request') ||
|
||
---
|
||
> ((github.event_name != 'pull_request') ||
|
||
343c343
|
||
< ${{ env.RUN }} "scons -j$(nproc) && python selfdrive/debug/dump_car_info.py --path /tmp/openpilot_cache/base_car_info"
|
||
---
|
||
> ${{ env.RUN }} "scons -j$(nproc) && python selfdrive/debug/dump_car_docs.py --path /tmp/openpilot_cache/base_car_docs"
|
||
355c355
|
||
< output=$(${{ env.RUN }} "python selfdrive/debug/print_docs_diff.py --path /tmp/openpilot_cache/base_car_info")
|
||
---
|
||
> output=$(${{ env.RUN }} "python selfdrive/debug/print_docs_diff.py --path /tmp/openpilot_cache/base_car_docs")
|
||
398c398
|
||
< export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' &&
|
||
---
|
||
> export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' &&
|
||
diff -r clearpilot/.github/workflows/setup-pre-commit/action.yaml FrogPilot/.github/workflows/setup-pre-commit/action.yaml
|
||
7c7
|
||
< with:
|
||
---
|
||
> with:
|
||
diff -r clearpilot/.gitignore FrogPilot/.gitignore
|
||
1,4d0
|
||
< prebuilt
|
||
< system/clearpilot/dev/reverse_ssh
|
||
< system/clearpilot/dev/id_rsa
|
||
< system/clearpilot/dev/id_rsa.pub
|
||
diff -r clearpilot/launch_chffrplus.sh FrogPilot/launch_chffrplus.sh
|
||
47,56c47,55
|
||
< # CLEARPILOT
|
||
< # if [ -f "${BASEDIR}/.overlay_init" ]; then
|
||
< # find ${BASEDIR}/.git -newer ${BASEDIR}/.overlay_init | grep -q '.' 2> /dev/null
|
||
< # if [ $? -eq 0 ]; then
|
||
< # echo "${BASEDIR} has been modified, skipping overlay update installation"
|
||
< # else
|
||
< # if [ -f "${STAGING_ROOT}/finalized/.overlay_consistent" ]; then
|
||
< # if [ ! -d /data/safe_staging/old_openpilot ]; then
|
||
< # echo "Valid overlay update found, installing"
|
||
< # LAUNCHER_LOCATION="${BASH_SOURCE[0]}"
|
||
---
|
||
> if [ -f "${BASEDIR}/.overlay_init" ]; then
|
||
> find ${BASEDIR}/.git -newer ${BASEDIR}/.overlay_init | grep -q '.' 2> /dev/null
|
||
> if [ $? -eq 0 ]; then
|
||
> echo "${BASEDIR} has been modified, skipping overlay update installation"
|
||
> else
|
||
> if [ -f "${STAGING_ROOT}/finalized/.overlay_consistent" ]; then
|
||
> if [ ! -d /data/safe_staging/old_openpilot ]; then
|
||
> echo "Valid overlay update found, installing"
|
||
> LAUNCHER_LOCATION="${BASH_SOURCE[0]}"
|
||
58,60c57,59
|
||
< # mv $BASEDIR /data/safe_staging/old_openpilot
|
||
< # mv "${STAGING_ROOT}/finalized" $BASEDIR
|
||
< # cd $BASEDIR
|
||
---
|
||
> mv $BASEDIR /data/safe_staging/old_openpilot
|
||
> mv "${STAGING_ROOT}/finalized" $BASEDIR
|
||
> cd $BASEDIR
|
||
62,71c61,70
|
||
< # echo "Restarting launch script ${LAUNCHER_LOCATION}"
|
||
< # unset AGNOS_VERSION
|
||
< # exec "${LAUNCHER_LOCATION}"
|
||
< # else
|
||
< # echo "openpilot backup found, not updating"
|
||
< # # TODO: restore backup? This means the updater didn't start after swapping
|
||
< # fi
|
||
< # fi
|
||
< # fi
|
||
< # fi
|
||
---
|
||
> echo "Restarting launch script ${LAUNCHER_LOCATION}"
|
||
> unset AGNOS_VERSION
|
||
> exec "${LAUNCHER_LOCATION}"
|
||
> else
|
||
> echo "openpilot backup found, not updating"
|
||
> # TODO: restore backup? This means the updater didn't start after swapping
|
||
> fi
|
||
> fi
|
||
> fi
|
||
> fi
|
||
diff -r clearpilot/launch_openpilot.sh FrogPilot/launch_openpilot.sh
|
||
3,4d2
|
||
< bash /data/openpilot/system/clearpilot/on_start.sh
|
||
<
|
||
Only in FrogPilot/opendbc: bmw_e9x_e8x.dbc
|
||
Only in FrogPilot/opendbc: cadillac_ct6_chassis.dbc
|
||
Only in FrogPilot/opendbc: cadillac_ct6_object.dbc
|
||
Only in FrogPilot/opendbc: cadillac_ct6_powertrain.dbc
|
||
Only in FrogPilot/opendbc: Dockerfile
|
||
Only in FrogPilot/opendbc: ESR.dbc
|
||
Only in FrogPilot/opendbc: ford_cgea1_2_bodycan_2011.dbc
|
||
Only in FrogPilot/opendbc: ford_cgea1_2_ptcan_2011.dbc
|
||
Only in FrogPilot/opendbc: ford_fusion_2018_pt.dbc
|
||
diff -r clearpilot/opendbc/ford_lincoln_base_pt.dbc FrogPilot/opendbc/ford_lincoln_base_pt.dbc
|
||
3610a3611,3613
|
||
> BO_ 1082 INSTRUMENT_PANEL: 8 GWM
|
||
> SG_ METRIC_UNITS : 54|1@0+ (1,0) [0|1] "SED" IPMA,PCM,PCM_HEV
|
||
>
|
||
Only in FrogPilot/opendbc/generator/chrysler: chrysler_pacifica_2017_hybrid.dbc
|
||
Only in FrogPilot/opendbc/generator/chrysler: chrysler_ram_dt.dbc
|
||
Only in FrogPilot/opendbc/generator/chrysler: chrysler_ram_hd.dbc
|
||
Only in FrogPilot/opendbc/generator/chrysler: .gitignore
|
||
Only in FrogPilot/opendbc/generator/chrysler: _stellantis_common.dbc
|
||
Only in FrogPilot/opendbc/generator/chrysler: _stellantis_common_ram.py
|
||
Only in FrogPilot/opendbc/generator: generator.py
|
||
Only in FrogPilot/opendbc/generator/gm: _comma.dbc
|
||
Only in FrogPilot/opendbc/generator/gm: gm_global_a_powertrain.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: acura_ilx_2016_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: acura_rdx_2018_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: acura_rdx_2020_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: _bosch_2018.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: _bosch_adas_2018.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: _comma.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_accord_2018_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_civic_ex_2022_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_civic_hatchback_ex_2017_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_civic_touring_2016_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_clarity_hybrid_2018_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: _honda_common.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_crv_ex_2017_body.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_crv_ex_2017_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_crv_executive_2016_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_crv_touring_2016_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_fit_ex_2018_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_fit_hybrid_2018_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_insight_ex_2019_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_odyssey_exl_2018.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_odyssey_extreme_edition_2018_china_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: honda_pilot_2023_can.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: _nidec_common.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: _steering_sensors_a.dbc
|
||
Only in FrogPilot/opendbc/generator/honda: _steering_sensors_b.dbc
|
||
Only in FrogPilot/opendbc/generator/hyundai: .gitignore
|
||
Only in FrogPilot/opendbc/generator/hyundai: hyundai_kia_mando_corner_radar.py
|
||
Only in FrogPilot/opendbc/generator/hyundai: hyundai_kia_mando_front_radar.py
|
||
Only in FrogPilot/opendbc/generator/nissan: _nissan_common.dbc
|
||
Only in FrogPilot/opendbc/generator/nissan: nissan_leaf_2018.dbc
|
||
Only in FrogPilot/opendbc/generator/nissan: nissan_x_trail_2017.dbc
|
||
Only in FrogPilot/opendbc/generator/subaru: subaru_forester_2017.dbc
|
||
Only in FrogPilot/opendbc/generator/subaru: subaru_global_2017.dbc
|
||
Only in FrogPilot/opendbc/generator/subaru: subaru_global_2020_hybrid.dbc
|
||
Only in FrogPilot/opendbc/generator/subaru: _subaru_global.dbc
|
||
Only in FrogPilot/opendbc/generator/subaru: subaru_outback_2015.dbc
|
||
Only in FrogPilot/opendbc/generator/subaru: subaru_outback_2019.dbc
|
||
Only in FrogPilot/opendbc/generator/subaru: _subaru_preglobal_2015.dbc
|
||
Only in FrogPilot/opendbc/generator/tesla: .gitignore
|
||
Only in FrogPilot/opendbc/generator/tesla: radar_common.py
|
||
Only in FrogPilot/opendbc/generator/tesla: tesla_radar_bosch.py
|
||
Only in FrogPilot/opendbc/generator/tesla: tesla_radar_continental.py
|
||
Only in FrogPilot/opendbc/generator: test_generator.py
|
||
Only in FrogPilot/opendbc/generator/toyota: _comma.dbc
|
||
Only in FrogPilot/opendbc/generator/toyota: _toyota_2017.dbc
|
||
Only in FrogPilot/opendbc/generator/toyota: toyota_new_mc_pt.dbc
|
||
Only in FrogPilot/opendbc/generator/toyota: toyota_nodsu_pt.dbc
|
||
Only in FrogPilot/opendbc/generator/toyota: toyota_tnga_k_pt.dbc
|
||
Only in FrogPilot/opendbc/.github/workflows: repo.yml
|
||
Only in FrogPilot/opendbc/.github/workflows: tests.yml
|
||
Only in FrogPilot/opendbc: gm_global_a_high_voltage_management.dbc
|
||
Only in FrogPilot/opendbc: gm_global_a_lowspeed_1818125.dbc
|
||
Only in FrogPilot/opendbc: gm_global_a_lowspeed.dbc
|
||
Only in FrogPilot/opendbc: gm_global_a_powertrain_expansion.dbc
|
||
diff -r clearpilot/opendbc/gm_global_a_powertrain_generated.dbc FrogPilot/opendbc/gm_global_a_powertrain_generated.dbc
|
||
190a191,193
|
||
> BO_ 500 SportMode: 6 XXX
|
||
> SG_ SportMode : 15|1@0+ (1,0) [0|1] "" XXX
|
||
>
|
||
diff -r clearpilot/opendbc/gm_global_a_powertrain_volt.dbc FrogPilot/opendbc/gm_global_a_powertrain_volt.dbc
|
||
82,85d81
|
||
< BO_ 1 left_blindspot: 8 XXX
|
||
< SG_ leftbsmlight : 4|1@1+ (1,0) [0|1] "" XXX
|
||
< BO_ 2 right_blindspot: 8 XXX
|
||
< SG_ rightbsmlight : 0|1@1+ (1,0) [0|1] "" XXX
|
||
131a128,131
|
||
> BO_ 322 BCMBlindSpotMonitor: 7 K9_BCM
|
||
> SG_ LeftBSM : 6|1@0+ (1,0) [0|1] "" XXX
|
||
> SG_ RightBSM : 7|1@0+ (1,0) [0|1] "" XXX
|
||
>
|
||
214,221c214,222
|
||
< SG_ GasRegenCmdActive : 0|1@0+ (1,0) [0|0] "" NEO
|
||
< SG_ RollingCounter : 7|2@0+ (1,0) [0|0] "" NEO
|
||
< SG_ GasRegenCmd : 8|14@0+ (1,0) [0|0] "" NEO
|
||
< SG_ GasRegenAlwaysOne2 : 9|1@0+ (1,0) [0|1] "" NEO
|
||
< SG_ GasRegenFullStopActive : 13|1@0+ (1,0) [0|0] "" NEO
|
||
< SG_ GasRegenAlwaysOne : 14|1@0+ (1,0) [0|1] "" NEO
|
||
< SG_ GasRegenCmdActiveInv : 32|1@0+ (1,0) [0|0] "" NEO
|
||
< SG_ GasRegenChecksum : 47|24@0+ (1,0) [0|0] "" NEO
|
||
---
|
||
> SG_ GasRegenAlwaysOne2 : 9|1@0+ (1,0) [0|1] "" NEO
|
||
> SG_ GasRegenAlwaysOne : 14|1@0+ (1,0) [0|1] "" NEO
|
||
> SG_ GasRegenChecksum : 47|24@0+ (1,0) [0|0] "" NEO
|
||
> SG_ GasRegenCmdActiveInv : 32|1@0+ (1,0) [0|0] "" NEO
|
||
> SG_ GasRegenFullStopActive : 13|1@0+ (1,0) [0|0] "" NEO
|
||
> SG_ GasRegenCmdActive : 0|1@0+ (1,0) [0|0] "" NEO
|
||
> SG_ RollingCounter : 7|2@0+ (1,0) [0|0] "" NEO
|
||
> SG_ GasRegenAlwaysOne3 : 23|1@0+ (1,0) [0|1] "" NEO
|
||
> SG_ GasRegenCmd : 22|12@0+ (1,0) [0|0] "" NEO
|
||
321a323,324
|
||
> CM_ SG_ 322 LeftBSM "For some cars, this can only be when the blinker is also active";
|
||
> CM_ SG_ 322 RightBSM "For some cars, this can only be when the blinker is also active";
|
||
Only in FrogPilot/opendbc: honda_fit_hybrid_2018_can_generated.dbc
|
||
Only in FrogPilot/opendbc: honda_pilot_2023_can_generated.dbc
|
||
Only in FrogPilot/opendbc: hyundai_2015_ccan.dbc
|
||
Only in FrogPilot/opendbc: hyundai_2015_mcan.dbc
|
||
diff -r clearpilot/opendbc/hyundai_canfd.dbc FrogPilot/opendbc/hyundai_canfd.dbc
|
||
266c266
|
||
< SG_ NEW_SIGNAL_12 : 35|9@1+ (0.1,0) [0|255] "" XXX
|
||
---
|
||
> SG_ ACC_ObjRelSpd : 35|9@1+ (0.1,-16.4) [-16.4|34.7] "m/s" XXX
|
||
319c319
|
||
< SG_ LKAS_BTN : 23|1@1+ (1,0) [0|1] "" XXX
|
||
---
|
||
> SG_ LFA_BTN : 23|1@1+ (1,0) [0|1] "" XXX
|
||
Only in FrogPilot/opendbc: hyundai_i30_2014.dbc
|
||
Only in FrogPilot/opendbc: hyundai_kia_mando_corner_radar_generated.dbc
|
||
Only in FrogPilot/opendbc: hyundai_santafe_2007.dbc
|
||
Only in FrogPilot/opendbc: LICENSE
|
||
Only in FrogPilot/opendbc: luxgen_s5_2015.dbc
|
||
Only in FrogPilot/opendbc: mazda_3_2019.dbc
|
||
Only in FrogPilot/opendbc: mazda_radar.dbc
|
||
Only in FrogPilot/opendbc: mazda_rx8.dbc
|
||
Only in FrogPilot/opendbc: mercedes_benz_e350_2010.dbc
|
||
Only in FrogPilot/opendbc: nissan_xterra_2011.dbc
|
||
Only in FrogPilot/opendbc: opel_omega_2001.dbc
|
||
Only in FrogPilot/opendbc: .pre-commit-config.yaml
|
||
Only in FrogPilot/opendbc: pyproject.toml
|
||
Only in FrogPilot/opendbc: README.md
|
||
Only in FrogPilot/opendbc: requirements.txt
|
||
Only in FrogPilot/opendbc: SConstruct
|
||
Only in FrogPilot/opendbc/site_scons/site_tools: cython.py
|
||
diff -r clearpilot/opendbc/tesla_can.dbc FrogPilot/opendbc/tesla_can.dbc
|
||
133a134,146
|
||
> BO_ 305 EPAS3P_sysStatus: 8 NEO
|
||
> SG_ EPAS_currentTuneMode : 7|4@0+ (1,0) [0|0] "" NEO
|
||
> SG_ EPAS_eacErrorCode : 23|4@0+ (1,0) [0|15] "" NEO
|
||
> SG_ EPAS_eacStatus : 55|3@0+ (1,0) [0|7] "" NEO
|
||
> SG_ EPAS_handsOnLevel : 39|2@0+ (1,0) [0|3] "" NEO
|
||
> SG_ EPAS_internalSAS : 37|14@0+ (0.1,-819.2) [-819.2|819] "deg" NEO
|
||
> SG_ EPAS_steeringFault : 2|1@0+ (1,0) [0|1] "" NEO
|
||
> SG_ EPAS_steeringRackForce : 1|10@0+ (50,-25575) [-25575|25575] "N" NEO
|
||
> SG_ EPAS_steeringReduced : 3|1@0+ (1,0) [0|1] "" NEO
|
||
> SG_ EPAS_sysStatusChecksum : 63|8@0+ (1,0) [0|255] "" NEO
|
||
> SG_ EPAS_sysStatusCounter : 51|4@0+ (1,0) [0|15] "" NEO
|
||
> SG_ EPAS_torsionBarTorque : 19|12@0+ (0.01,-20.5) [-20.5|20.45] "Nm" NEO
|
||
>
|
||
710a724,727
|
||
> BO_ 780 DriverSeat: 8 XXX
|
||
> SG_ occupancyStatus : 16|3@1+ (1,0) [0|7] "" XXX
|
||
> SG_ buckleStatus : 19|2@1+ (1,0) [0|3] "" XXX
|
||
>
|
||
804a822,823
|
||
> VAL_ 780 occupancyStatus 1 "OCCUPIED" 0 "UNOCCUPIED" ;
|
||
> VAL_ 780 buckleStatus 1 "LATCHED" 0 "UNLATCHED" ;
|
||
Only in FrogPilot/opendbc: tesla_radar_bosch_generated.dbc
|
||
Only in FrogPilot/opendbc: tesla_radar_continental_generated.dbc
|
||
Only in clearpilot/opendbc: tesla_radar.dbc
|
||
Only in FrogPilot/opendbc: toyota_2017_ref_pt.dbc
|
||
Only in FrogPilot/opendbc: toyota_iQ_2009_can.dbc
|
||
diff -r clearpilot/opendbc/toyota_new_mc_pt_generated.dbc FrogPilot/opendbc/toyota_new_mc_pt_generated.dbc
|
||
454c454
|
||
< CM_ SG_ 835 LEAD_VEHICLE_STOPPED "LVSTP in leaked DBC, set to 1 when lead is stopped";
|
||
---
|
||
> CM_ SG_ 835 LEAD_VEHICLE_STOPPED "Set to 1 when lead is stopped, likely only used in older TSS-P vehicles";
|
||
524a525
|
||
> VAL_ 921 DISTANCE_LINES 0 "not displayed" 1 "close" 2 "medium" 3 "far";
|
||
diff -r clearpilot/opendbc/toyota_nodsu_pt_generated.dbc FrogPilot/opendbc/toyota_nodsu_pt_generated.dbc
|
||
454c454
|
||
< CM_ SG_ 835 LEAD_VEHICLE_STOPPED "LVSTP in leaked DBC, set to 1 when lead is stopped";
|
||
---
|
||
> CM_ SG_ 835 LEAD_VEHICLE_STOPPED "Set to 1 when lead is stopped, likely only used in older TSS-P vehicles";
|
||
524a525
|
||
> VAL_ 921 DISTANCE_LINES 0 "not displayed" 1 "close" 2 "medium" 3 "far";
|
||
Only in FrogPilot/opendbc: toyota_prius_2010_pt.dbc
|
||
Only in FrogPilot/opendbc: toyota_radar_dsu_tssp.dbc
|
||
diff -r clearpilot/opendbc/toyota_tnga_k_pt_generated.dbc FrogPilot/opendbc/toyota_tnga_k_pt_generated.dbc
|
||
454c454
|
||
< CM_ SG_ 835 LEAD_VEHICLE_STOPPED "LVSTP in leaked DBC, set to 1 when lead is stopped";
|
||
---
|
||
> CM_ SG_ 835 LEAD_VEHICLE_STOPPED "Set to 1 when lead is stopped, likely only used in older TSS-P vehicles";
|
||
524a525
|
||
> VAL_ 921 DISTANCE_LINES 0 "not displayed" 1 "close" 2 "medium" 3 "far";
|
||
Only in FrogPilot/opendbc: volvo_v40_2017_pt.dbc
|
||
Only in FrogPilot/opendbc: volvo_v60_2015_pt.dbc
|
||
diff -r clearpilot/openpilot/common/params.cc FrogPilot/openpilot/common/params.cc
|
||
231a232
|
||
> {"CameraViewReset", PERSISTENT},
|
||
276d276
|
||
< {"DoSoftReboot", CLEAR_ON_MANAGER_START},
|
||
279a280
|
||
> {"EcoGearOn", PERSISTENT},
|
||
436a438
|
||
> {"SportGearOn", PERSISTENT},
|
||
diff -r clearpilot/openpilot/common/realtime.py FrogPilot/openpilot/common/realtime.py
|
||
37,40c37
|
||
< try: # CLEARPILOT ....
|
||
< os.sched_setaffinity(0, cores)
|
||
< except:
|
||
< nothing=0
|
||
---
|
||
> os.sched_setaffinity(0, cores)
|
||
diff -r clearpilot/openpilot/__init__.py FrogPilot/openpilot/__init__.py
|
||
1,3d0
|
||
<
|
||
<
|
||
<
|
||
Binary files clearpilot/openpilot/selfdrive/assets/img_spinner_comma.png and FrogPilot/openpilot/selfdrive/assets/img_spinner_comma.png differ
|
||
Only in clearpilot/openpilot/selfdrive/assets: img_spinner_comma.png~
|
||
Binary files clearpilot/openpilot/selfdrive/assets/img_spinner_track.png and FrogPilot/openpilot/selfdrive/assets/img_spinner_track.png differ
|
||
diff -r clearpilot/openpilot/selfdrive/car/honda/values.py FrogPilot/openpilot/selfdrive/car/honda/values.py
|
||
198,203d197
|
||
< CLARITY = HondaBoschPlatformConfig(
|
||
< "HONDA CLARITY 2018",
|
||
< [HondaCarDocs("Honda Clarity 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)],
|
||
< CarSpecs(mass=4052. * CV.LB_TO_KG, wheelbase=2.75, centerToFrontRatio=0.41, steerRatio=16.50, tireStiffnessFactor=1.),
|
||
< dbc_dict('honda_clarity_hybrid_2018_can_generated', 'acura_ilx_2016_nidec'),
|
||
< )
|
||
211a206,211
|
||
> )
|
||
> CLARITY = HondaNidecPlatformConfig(
|
||
> "HONDA CLARITY 2018",
|
||
> [HondaCarDocs("Honda Clarity 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)],
|
||
> CarSpecs(mass=4052. * CV.LB_TO_KG, wheelbase=2.75, centerToFrontRatio=0.41, steerRatio=16.50, tireStiffnessFactor=1.),
|
||
> dbc_dict('honda_clarity_hybrid_2018_can_generated', 'acura_ilx_2016_nidec'),
|
||
diff -r clearpilot/openpilot/selfdrive/car/hyundai/carcontroller.py FrogPilot/openpilot/selfdrive/car/hyundai/carcontroller.py
|
||
124,126c124
|
||
< # CLEARPILOT TEST self.CS.lkas_enabled
|
||
< # can_sends.append(hyundaicanfd.create_lfahda_cluster(self.packer, self.CAN, CC.enabled, CC.latActive))
|
||
< can_sends.append(hyundaicanfd.create_lfahda_cluster(self.packer, self.CAN, CS.lkas_enabled, CS.lkas_enabled))
|
||
---
|
||
> can_sends.append(hyundaicanfd.create_lfahda_cluster(self.packer, self.CAN, CC.enabled, CC.latActive))
|
||
diff -r clearpilot/openpilot/selfdrive/car/hyundai/carstate.py FrogPilot/openpilot/selfdrive/car/hyundai/carstate.py
|
||
281,289c281
|
||
<
|
||
< # CLEARPILOT fix
|
||
< lkas_enabled = False
|
||
< try:
|
||
< lkas_enabled = cp.vl[self.cruise_btns_msg_canfd]["LKAS_BTN"]
|
||
< except:
|
||
< nothing = 0
|
||
<
|
||
< self.lkas_enabled = lkas_enabled
|
||
---
|
||
> self.lkas_enabled = cp.vl[self.cruise_btns_msg_canfd]["LFA_BTN"]
|
||
diff -r clearpilot/openpilot/selfdrive/car/hyundai/hyundaicanfd.py FrogPilot/openpilot/selfdrive/car/hyundai/hyundaicanfd.py
|
||
43,44c43,44
|
||
< "LKA_MODE": 2, # CP: Whats this?
|
||
< "LKA_ICON": 2 if lat_active else 1, # CP: Whats this?
|
||
---
|
||
> "LKA_MODE": 2,
|
||
> "LKA_ICON": 2 if lat_active else 1,
|
||
116d115
|
||
< # CLEARPILOT changed HDA icons
|
||
119,122c118,119
|
||
< # 0 off, 1 gray, 2 green, 3 blinking (wheel icon)
|
||
< # CP: Is this actually the wheel? Might this be the HDA2 thing?
|
||
< "HDA_ICON": 0, # Intention is to have this represent stock HDA mode
|
||
< "LFA_ICON": 2 if enabled else 1 if lat_active else 0,
|
||
---
|
||
> "HDA_ICON": 1 if enabled else 0,
|
||
> "LFA_ICON": 2 if lat_active else 0,
|
||
diff -r clearpilot/openpilot/selfdrive/car/toyota/carcontroller.py FrogPilot/openpilot/selfdrive/car/toyota/carcontroller.py
|
||
10c10
|
||
< UNSUPPORTED_DSU_CAR, STOP_AND_GO_CAR
|
||
---
|
||
> UNSUPPORTED_DSU_CAR, STOP_AND_GO_CAR, TSS2_CAR
|
||
171c171
|
||
< if CC.longActive and not self.prohibit_neg_calculation and (self.cydia_tune or self.frogs_go_moo_tune):
|
||
---
|
||
> if CC.longActive and not self.prohibit_neg_calculation and (self.cydia_tune or self.frogs_go_moo_tune and self.CP.carFingerprint not in TSS2_CAR):
|
||
231c231
|
||
< accel_raw = -2.5 if stopping and (self.cydia_tune or self.frogs_go_moo_tune) else actuators.accel
|
||
---
|
||
> accel_raw = -2.5 if stopping and self.cydia_tune else actuators.accel
|
||
diff -r clearpilot/openpilot/selfdrive/car/toyota/carstate.py FrogPilot/openpilot/selfdrive/car/toyota/carstate.py
|
||
224a225,227
|
||
> self.params_memory.put_bool("EcoGearOn", cp.vl["GEAR_PACKET"]['ECON_ON'])
|
||
> self.params_memory.put_bool("SportGearOn", cp.vl["GEAR_PACKET"]['SPORT_ON'])
|
||
>
|
||
diff -r clearpilot/openpilot/selfdrive/car/toyota/interface.py FrogPilot/openpilot/selfdrive/car/toyota/interface.py
|
||
152,155d151
|
||
< # on stock Toyota this is -2.5
|
||
< ret.stopAccel = -2.5
|
||
< ret.stoppingDecelRate = 0.3 # reach stopping target smoothly
|
||
<
|
||
158a155,157
|
||
> tune.kpBP = [0., 5., 20.]
|
||
> tune.kpV = [1.3, 1.0, 0.7]
|
||
>
|
||
163,165c162,167
|
||
< # In MPH = [ 0, 11, 45]
|
||
< tune.kpBP = [0., 5., 20.]
|
||
< tune.kpV = [1.3, 1.0, 0.7]
|
||
---
|
||
> if candidate in TSS2_CAR:
|
||
> ret.stopAccel = -0.40 # Toyota requests -0.4 when stopped
|
||
> ret.stoppingDecelRate = 0.09 # reach stopping target smoothly
|
||
> else:
|
||
> ret.stopAccel = -2.5 # on stock Toyota this is -2.5
|
||
> ret.stoppingDecelRate = 0.17
|
||
167,168c169,170
|
||
< ret.vEgoStopping = 0.15 # car is near 0.1 to 0.2 when car starts requesting stopping accel
|
||
< ret.vEgoStarting = 0.15 # needs to be > or == vEgoStopping
|
||
---
|
||
> ret.vEgoStopping = 0.15 # car is near 0.1 to 0.2 when car starts requesting stopping accel
|
||
> ret.vEgoStarting = 0.15 # needs to be > or == vEgoStopping
|
||
Only in clearpilot/openpilot/selfdrive: clearpilot
|
||
diff -r clearpilot/openpilot/selfdrive/controls/controlsd.py FrogPilot/openpilot/selfdrive/controls/controlsd.py
|
||
3a4
|
||
> import random
|
||
79c80
|
||
< self.radarless_model = self.params.get("Model", encoding='utf-8') in RADARLESS_MODELS
|
||
---
|
||
> self.radarless_model = self.params.get("Model", block=True, encoding='utf-8') in RADARLESS_MODELS
|
||
203d203
|
||
< self.crashed_timer = 0
|
||
312,321c312,323
|
||
< # CLEARPILOT - Disabled lane change helper
|
||
< # CLEARPILOT TODO: Make this a toggle
|
||
< NoLaneChange = False
|
||
< if not NoLaneChange:
|
||
< if self.sm['modelV2'].meta.laneChangeState == LaneChangeState.preLaneChange:
|
||
< direction = self.sm['modelV2'].meta.laneChangeDirection
|
||
< if (CS.leftBlindspot and direction == LaneChangeDirection.left) or \
|
||
< (CS.rightBlindspot and direction == LaneChangeDirection.right):
|
||
< if self.loud_blindspot_alert:
|
||
< self.events.add(EventName.laneChangeBlockedLoud)
|
||
---
|
||
> if self.sm['modelV2'].meta.laneChangeState == LaneChangeState.preLaneChange:
|
||
> direction = self.sm['modelV2'].meta.laneChangeDirection
|
||
> if (CS.leftBlindspot and direction == LaneChangeDirection.left) or \
|
||
> (CS.rightBlindspot and direction == LaneChangeDirection.right):
|
||
> if self.loud_blindspot_alert:
|
||
> self.events.add(EventName.laneChangeBlockedLoud)
|
||
> else:
|
||
> self.events.add(EventName.laneChangeBlocked)
|
||
> else:
|
||
> if direction == LaneChangeDirection.left:
|
||
> if self.sm['frogpilotPlan'].laneWidthLeft >= self.lane_detection_width:
|
||
> self.events.add(EventName.preLaneChangeLeft)
|
||
323c325
|
||
< self.events.add(EventName.laneChangeBlocked)
|
||
---
|
||
> self.events.add(EventName.noLaneAvailable)
|
||
325,329c327,328
|
||
< if direction == LaneChangeDirection.left:
|
||
< if self.sm['frogpilotPlan'].laneWidthLeft >= self.lane_detection_width:
|
||
< self.events.add(EventName.preLaneChangeLeft)
|
||
< else:
|
||
< self.events.add(EventName.noLaneAvailable)
|
||
---
|
||
> if self.sm['frogpilotPlan'].laneWidthRight >= self.lane_detection_width:
|
||
> self.events.add(EventName.preLaneChangeRight)
|
||
331,337c330,333
|
||
< if self.sm['frogpilotPlan'].laneWidthRight >= self.lane_detection_width:
|
||
< self.events.add(EventName.preLaneChangeRight)
|
||
< else:
|
||
< self.events.add(EventName.noLaneAvailable)
|
||
< elif self.sm['modelV2'].meta.laneChangeState in (LaneChangeState.laneChangeStarting,
|
||
< LaneChangeState.laneChangeFinishing):
|
||
< self.events.add(EventName.laneChange)
|
||
---
|
||
> self.events.add(EventName.noLaneAvailable)
|
||
> elif self.sm['modelV2'].meta.laneChangeState in (LaneChangeState.laneChangeStarting,
|
||
> LaneChangeState.laneChangeFinishing):
|
||
> self.events.add(EventName.laneChange)
|
||
633,635d628
|
||
< # CLEARPILOT test lane change
|
||
< clearpilot_disable_lat_on_lane_change = True
|
||
<
|
||
640,641d632
|
||
< if clearpilot_disable_lat_on_lane_change:
|
||
< CC.latActive = False
|
||
704,706c695,702
|
||
< if self.sm.frame % 10000 == 0 and self.random_events:
|
||
< lac_log.active and self.events.add(EventName.firefoxSteerSaturated)
|
||
< self.params_memory.put_int("CurrentRandomEvent", 1)
|
||
---
|
||
> event_choices = [1, 2]
|
||
> if self.sm.frame % (10000 // len(event_choices)) == 0 and self.random_events:
|
||
> event_choice = random.choice(event_choices)
|
||
> if event_choice == 1:
|
||
> lac_log.active and self.events.add(EventName.firefoxSteerSaturated)
|
||
> self.params_memory.put_int("CurrentRandomEvent", 1)
|
||
> elif event_choice == 2:
|
||
> lac_log.active and self.events.add(EventName.goatSteerSaturated)
|
||
1014,1017c1010,1011
|
||
< if os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt')) and self.crashed_timer < 10:
|
||
< self.events.add(EventName.openpilotCrashed)
|
||
<
|
||
< if self.random_events and not self.openpilot_crashed_triggered:
|
||
---
|
||
> if os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt')) and not self.openpilot_crashed_triggered:
|
||
> if self.random_events:
|
||
1019c1013,1014
|
||
< self.openpilot_crashed_triggered = True
|
||
---
|
||
> else:
|
||
> self.events.add(EventName.openpilotCrashed)
|
||
1021c1016
|
||
< self.crashed_timer += DT_CTRL
|
||
---
|
||
> self.openpilot_crashed_triggered = True
|
||
1101c1096
|
||
< current_total_distance = self.params_storage.get_float("FrogPilotKilometers")
|
||
---
|
||
> current_total_distance = self.params.get_float("FrogPilotKilometers")
|
||
1103c1098,1102
|
||
< self.params_storage.put_float_nonblocking("FrogPilotKilometers", current_total_distance + distance_to_add)
|
||
---
|
||
> new_total_distance = current_total_distance + distance_to_add
|
||
>
|
||
> self.params.put_float_nonblocking("FrogPilotKilometers", new_total_distance)
|
||
> self.params_storage.put_float_nonblocking("FrogPilotKilometers", new_total_distance)
|
||
>
|
||
1106c1105
|
||
< current_total_time = self.params_storage.get_float("FrogPilotMinutes")
|
||
---
|
||
> current_total_time = self.params.get_float("FrogPilotMinutes")
|
||
1108c1107,1111
|
||
< self.params_storage.put_float_nonblocking("FrogPilotMinutes", current_total_time + time_to_add)
|
||
---
|
||
> new_total_time = current_total_time + time_to_add
|
||
>
|
||
> self.params.put_float_nonblocking("FrogPilotMinutes", new_total_time)
|
||
> self.params_storage.put_float_nonblocking("FrogPilotMinutes", new_total_time)
|
||
>
|
||
1112,1113c1115,1119
|
||
< current_total_drives = self.params_storage.get_int("FrogPilotDrives")
|
||
< self.params_storage.put_int_nonblocking("FrogPilotDrives", current_total_drives + 1)
|
||
---
|
||
> new_total_drives = self.params.get_int("FrogPilotDrives") + 1
|
||
>
|
||
> self.params.put_int_nonblocking("FrogPilotDrives", new_total_drives)
|
||
> self.params_storage.put_int_nonblocking("FrogPilotDrives", new_total_drives)
|
||
>
|
||
diff -r clearpilot/openpilot/selfdrive/controls/lib/desire_helper.py FrogPilot/openpilot/selfdrive/controls/lib/desire_helper.py
|
||
13d12
|
||
<
|
||
65,67d63
|
||
< # Clearpilot test lane change no lat
|
||
< clearpilot_disable_lat_on_lane_change = True
|
||
<
|
||
78c74
|
||
< if (not clearpilot_disable_lat_on_lane_change and not lateral_active) or self.lane_change_timer > LANE_CHANGE_TIME_MAX:
|
||
---
|
||
> if not lateral_active or self.lane_change_timer > LANE_CHANGE_TIME_MAX:
|
||
122,131c118,123
|
||
< if clearpilot_disable_lat_on_lane_change:
|
||
< if not one_blinker:
|
||
< self.lane_change_state = LaneChangeState.laneChangeFinishing
|
||
< else:
|
||
< # fade out over .5s
|
||
< self.lane_change_ll_prob = max(self.lane_change_ll_prob - 2 * DT_MDL, 0.0)
|
||
<
|
||
< # 98% certainty
|
||
< if lane_change_prob < 0.02 and self.lane_change_ll_prob < 0.01:
|
||
< self.lane_change_state = LaneChangeState.laneChangeFinishing
|
||
---
|
||
> # fade out over .5s
|
||
> self.lane_change_ll_prob = max(self.lane_change_ll_prob - 2 * DT_MDL, 0.0)
|
||
>
|
||
> # 98% certainty
|
||
> if lane_change_prob < 0.02 and self.lane_change_ll_prob < 0.01:
|
||
> self.lane_change_state = LaneChangeState.laneChangeFinishing
|
||
diff -r clearpilot/openpilot/selfdrive/controls/lib/events.py FrogPilot/openpilot/selfdrive/controls/lib/events.py
|
||
203,208d202
|
||
< # ClearPilot
|
||
< class InvisibleAlert(Alert):
|
||
< def __init__(self, alert_text_1: str, alert_text_2: str = "", alert_status=AlertStatus.normal):
|
||
< super().__init__(alert_text_1, alert_text_2,
|
||
< alert_status, AlertSize.none,
|
||
< Priority.LOWER, VisualAlert.none, AudibleAlert.none, 5.),
|
||
241,243c235
|
||
< # CLEARPILOT
|
||
< return Alert("","", AlertStatus.frogpilot, AlertSize.none, Priority.LOW, VisualAlert.none, AudibleAlert.none, 0.2)
|
||
< # return StartupAlert("Hippity hoppity this is my property", "so I do what I want 🐸", alert_status=AlertStatus.frogpilot)
|
||
---
|
||
> return StartupAlert("Hippity hoppity this is my property", "so I do what I want 🐸", alert_status=AlertStatus.frogpilot)
|
||
270c262
|
||
< AlertStatus.normal, AlertSize.small,
|
||
---
|
||
> AlertStatus.normal, AlertSize.mid,
|
||
282,288c274,278
|
||
< # CLearpilot
|
||
< return Alert("","", AlertStatus.frogpilot, AlertSize.none, Priority.LOW, VisualAlert.none, AudibleAlert.none, 0.2)
|
||
< # return Alert(
|
||
< # "NNFF Torque Controller loaded",
|
||
< # model_name,
|
||
< # AlertStatus.frogpilot, AlertSize.mid,
|
||
< # Priority.LOW, VisualAlert.none, AudibleAlert.engage, 5.0)
|
||
---
|
||
> return Alert(
|
||
> "NNFF Torque Controller loaded",
|
||
> model_name,
|
||
> AlertStatus.frogpilot, AlertSize.mid,
|
||
> Priority.LOW, VisualAlert.none, AudibleAlert.engage, 5.0)
|
||
514d503
|
||
< # CLEARPILOT
|
||
517,520c506,509
|
||
< "PAY ATTENTION",
|
||
< "DRIVER DISTRACTED",
|
||
< AlertStatus.userPrompt, AlertSize.full,
|
||
< Priority.MID, VisualAlert.steerRequired, AudibleAlert.warningImmediate, .1),
|
||
---
|
||
> "DISENGAGE IMMEDIATELY",
|
||
> "Driver Distracted",
|
||
> AlertStatus.critical, AlertSize.full,
|
||
> Priority.HIGH, VisualAlert.steerRequired, AudibleAlert.warningImmediate, .1),
|
||
539d527
|
||
< # CLEARPILOT
|
||
542c530
|
||
< "TOUCH STEERING WHEEL",
|
||
---
|
||
> "DISENGAGE IMMEDIATELY",
|
||
544,545c532,533
|
||
< AlertStatus.userPrompt, AlertSize.full,
|
||
< Priority.MID, VisualAlert.steerRequired, AudibleAlert.warningImmediate, .1),
|
||
---
|
||
> AlertStatus.critical, AlertSize.full,
|
||
> Priority.HIGH, VisualAlert.steerRequired, AudibleAlert.warningImmediate, .1),
|
||
1076c1064
|
||
< Priority.HIGH, VisualAlert.none, AudibleAlert.none, .1),
|
||
---
|
||
> Priority.HIGHEST, VisualAlert.none, AudibleAlert.none, 10.),
|
||
1153c1141
|
||
< Priority.HIGHEST, VisualAlert.none, AudibleAlert.fart, 4.),
|
||
---
|
||
> Priority.HIGHEST, VisualAlert.none, AudibleAlert.fart, 10.),
|
||
diff -r clearpilot/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py FrogPilot/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py
|
||
365c365,366
|
||
< lead_xv_0 = self.process_lead(lead_one, self.increased_stopping_distance if not trafficModeActive else 0)
|
||
---
|
||
> increase_distance = max(self.increased_stopping_distance - v_ego if not trafficModeActive else 0, 0)
|
||
> lead_xv_0 = self.process_lead(lead_one, increase_distance)
|
||
diff -r clearpilot/openpilot/selfdrive/controls/lib/longitudinal_planner.py FrogPilot/openpilot/selfdrive/controls/lib/longitudinal_planner.py
|
||
144c144
|
||
< self.radarless_model = self.params.get("Model", encoding='utf-8') in RADARLESS_MODELS
|
||
---
|
||
> self.radarless_model = self.params.get("Model", block=True, encoding='utf-8') in RADARLESS_MODELS
|
||
146c146
|
||
< self.release = get_short_branch() == "clearpilot"
|
||
---
|
||
> self.release = get_short_branch() == "FrogPilot"
|
||
253c253
|
||
< self.taco_tune = lateral_tune and self.params.get_bool("TacoTune") and not self.release
|
||
---
|
||
> self.taco_tune = lateral_tune and self.params.get_bool("TacoTune")
|
||
Only in clearpilot/openpilot/selfdrive/controls: radardless.py
|
||
diff -r clearpilot/openpilot/selfdrive/controls/radard.py FrogPilot/openpilot/selfdrive/controls/radard.py
|
||
15a16
|
||
> from openpilot.selfdrive.frogpilot.controls.lib.model_manager import RADARLESS_MODELS
|
||
196a198,199
|
||
> self.points: dict[int, tuple[float, float, float]] = {}
|
||
>
|
||
207a211
|
||
> self.radar_tracks_valid = False
|
||
293a298,323
|
||
> def update_radardless(self, rr: Optional[car.RadarData]):
|
||
> radar_points = []
|
||
> radar_errors = []
|
||
> if rr is not None:
|
||
> radar_points = rr.points
|
||
> radar_errors = rr.errors
|
||
>
|
||
> self.radar_tracks_valid = len(radar_errors) == 0
|
||
>
|
||
> self.points = {}
|
||
> for pt in radar_points:
|
||
> self.points[pt.trackId] = (pt.dRel, pt.yRel, pt.vRel)
|
||
>
|
||
> def publish_radardless(self):
|
||
> tracks_msg = messaging.new_message('liveTracks', len(self.points))
|
||
> tracks_msg.valid = self.radar_tracks_valid
|
||
> for index, tid in enumerate(sorted(self.points.keys())):
|
||
> tracks_msg.liveTracks[index] = {
|
||
> "trackId": tid,
|
||
> "dRel": float(self.points[tid][0]) + RADAR_TO_CAMERA,
|
||
> "yRel": -float(self.points[tid][1]),
|
||
> "vRel": float(self.points[tid][2]),
|
||
> }
|
||
>
|
||
> return tracks_msg
|
||
>
|
||
314,315c344
|
||
< sm = messaging.SubMaster(['modelV2', 'carState'], frequency=int(1./DT_CTRL))
|
||
< pm = messaging.PubMaster(['radarState', 'liveTracks'])
|
||
---
|
||
> pub_sock = messaging.pub_sock('liveTracks')
|
||
318a348,349
|
||
> # TODO timing is different between cars, need a single time step for all cars
|
||
> # TODO just take the fastest one for now, and keep resending same messages for slower radars
|
||
322,327c353
|
||
< while 1:
|
||
< can_strings = messaging.drain_sock_raw(can_sock, wait_for_one=True)
|
||
< rr = RI.update(can_strings)
|
||
< sm.update(0)
|
||
< if rr is None:
|
||
< continue
|
||
---
|
||
> RADARLESS = Params().get("Model", block=True, encoding='utf-8') in RADARLESS_MODELS
|
||
329,332c355,378
|
||
< RD.update(sm, rr)
|
||
< RD.publish(pm, -rk.remaining*1000.0)
|
||
<
|
||
< rk.monitor_time()
|
||
---
|
||
> if not RADARLESS:
|
||
> sm = messaging.SubMaster(['modelV2', 'carState'], frequency=int(1./DT_CTRL))
|
||
> pm = messaging.PubMaster(['radarState', 'liveTracks'])
|
||
>
|
||
> while True:
|
||
> can_strings = messaging.drain_sock_raw(can_sock, wait_for_one=True)
|
||
> rr = RI.update(can_strings)
|
||
> sm.update(0)
|
||
> if rr is None:
|
||
> continue
|
||
>
|
||
> RD.update(sm, rr)
|
||
> RD.publish(pm, -rk.remaining*1000.0)
|
||
> rk.monitor_time()
|
||
> else:
|
||
> while True:
|
||
> can_strings = messaging.drain_sock_raw(can_sock, wait_for_one=True)
|
||
> rr = RI.update(can_strings)
|
||
> if rr is None:
|
||
> continue
|
||
>
|
||
> RD.update_radardless(rr)
|
||
> msg = RD.publish_radardless()
|
||
> pub_sock.send(msg.to_bytes())
|
||
333a380
|
||
> rk.monitor_time()
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/controls/frogpilot_planner.py FrogPilot/openpilot/selfdrive/frogpilot/controls/frogpilot_planner.py
|
||
65c65
|
||
< self.release = get_short_branch() == "clearpilot"
|
||
---
|
||
> self.release = get_short_branch() == "FrogPilot"
|
||
67c67
|
||
< self.radarless_model = self.params.get("Model", encoding='utf-8') in RADARLESS_MODELS
|
||
---
|
||
> self.radarless_model = self.params.get("Model", block=True, encoding='utf-8') in RADARLESS_MODELS
|
||
73a74
|
||
> self.road_curvature = 0
|
||
80a82,83
|
||
> v_cruise_changed = (self.mtsc_target or self.vtsc_target) < v_cruise
|
||
>
|
||
84c87
|
||
< if self.acceleration_profile == 1:
|
||
---
|
||
> if self.acceleration_profile == 1 or self.params_memory.get_bool("EcoGearOn"):
|
||
86c89
|
||
< elif self.acceleration_profile in (2, 3):
|
||
---
|
||
> elif self.acceleration_profile in (2, 3) or self.params_memory.get_bool("SportGearOn"):
|
||
93,95c96
|
||
< v_cruise_changed = (self.mtsc_target or self.vtsc_target) < v_cruise
|
||
<
|
||
< if self.deceleration_profile == 1 and not v_cruise_changed:
|
||
---
|
||
> if (self.deceleration_profile == 1 or self.params_memory.get_bool("EcoGearOn")) and not v_cruise_changed:
|
||
97c98
|
||
< elif self.deceleration_profile == 2 and not v_cruise_changed:
|
||
---
|
||
> elif (self.deceleration_profile == 2 or self.params_memory.get_bool("SportGearOn")) and not v_cruise_changed:
|
||
112c113,114
|
||
< road_curvature = calculate_road_curvature(modelData, v_ego)
|
||
---
|
||
> if self.conditional_experimental_mode and self.CP.openpilotLongitudinalControl or self.green_light_alert:
|
||
> self.cem.update(carState, controlsState.enabled, frogpilotNavigation, self.lead_one, modelData, self.road_curvature, self.t_follow, v_ego)
|
||
116a119,120
|
||
> self.jerk, self.t_follow = self.update_follow_values(base_jerk, self.lead_one, base_t_follow, frogpilotCarControl.trafficModeActive, v_ego, v_lead)
|
||
>
|
||
120d123
|
||
< self.jerk, self.t_follow = self.update_follow_values(base_jerk, self.lead_one, base_t_follow, frogpilotCarControl.trafficModeActive, v_ego, v_lead)
|
||
124a128
|
||
> self.jerk = 1
|
||
127,131d130
|
||
< self.v_cruise = self.update_v_cruise(carState, controlsState, controlsState.enabled, liveLocationKalman, modelData, road_curvature, v_cruise, v_ego)
|
||
<
|
||
< if self.conditional_experimental_mode and self.CP.openpilotLongitudinalControl or self.green_light_alert:
|
||
< self.cem.update(carState, controlsState.enabled, frogpilotNavigation, self.lead_one, modelData, road_curvature, self.t_follow, v_ego)
|
||
<
|
||
134c133,134
|
||
< if len(model_leads) > 0:
|
||
---
|
||
>
|
||
> if len(list(modelData.leadsV3)) > 0:
|
||
141a142,145
|
||
> self.road_curvature = calculate_road_curvature(modelData, v_ego)
|
||
>
|
||
> self.v_cruise = self.update_v_cruise(carState, controlsState, controlsState.enabled, liveLocationKalman, modelData, v_cruise, v_ego)
|
||
>
|
||
150c154
|
||
< # Offset by FrogAi for FrogPilot for a more natural takeoff with a lead
|
||
---
|
||
> # Offset by FrogAi for FrogPilot for a more natural approach to a faster lead
|
||
152c156
|
||
< distance_factor = np.maximum(1, lead_distance - (v_ego * t_follow))
|
||
---
|
||
> distance_factor = np.maximum(lead_distance - (v_ego * t_follow), 1)
|
||
160,161c164,165
|
||
< distance_factor = np.maximum(1, lead_distance - (v_lead * t_follow))
|
||
< far_lead_offset = max(lead_distance - CITY_SPEED_LIMIT, 0) if self.smoother_braking_far_lead else 0
|
||
---
|
||
> distance_factor = np.maximum(lead_distance - (v_lead * t_follow), 1)
|
||
> far_lead_offset = max(lead_distance - (v_ego * t_follow) - stopping_distance, 0) if self.smoother_braking_far_lead else 0
|
||
164c168
|
||
< jerk *= max(braking_offset**(1 / COMFORT_BRAKE), 1)
|
||
---
|
||
> jerk *= np.minimum(braking_offset, COMFORT_BRAKE)
|
||
169c173
|
||
< def update_v_cruise(self, carState, controlsState, enabled, liveLocationKalman, modelData, road_curvature, v_cruise, v_ego):
|
||
---
|
||
> def update_v_cruise(self, carState, controlsState, enabled, liveLocationKalman, modelData, v_cruise, v_ego):
|
||
183c187
|
||
< if self.mtsc_curvature_check and road_curvature < 1.0 and not mtsc_active:
|
||
---
|
||
> if self.mtsc_curvature_check and self.road_curvature < 1.0 and not mtsc_active:
|
||
247c251
|
||
< frogpilotPlan.accelerationJerk = A_CHANGE_COST * (float(self.jerk) if self.lead_one.status else 1)
|
||
---
|
||
> frogpilotPlan.accelerationJerk = A_CHANGE_COST * float(self.jerk)
|
||
252c256
|
||
< frogpilotPlan.egoJerk = J_EGO_COST * (float(self.jerk) if self.lead_one.status else 1)
|
||
---
|
||
> frogpilotPlan.egoJerk = J_EGO_COST * float(self.jerk)
|
||
296,297c300,301
|
||
< self.traffic_mode_jerk = [self.traffic_jerk, self.aggressive_jerk] if self.custom_personalities and not self.release else [1.0, 0.5]
|
||
< self.traffic_mode_t_follow = [self.traffic_follow, self.aggressive_follow] if self.custom_personalities and not self.release else [0.5, 1.0]
|
||
---
|
||
> self.traffic_mode_jerk = [self.traffic_jerk, self.aggressive_jerk] if self.custom_personalities else [1.0, 0.5]
|
||
> self.traffic_mode_t_follow = [self.traffic_follow, self.aggressive_follow] if self.custom_personalities else [0.5, 1.0]
|
||
312,313c316,317
|
||
< self.smoother_braking_far_lead = self.smoother_braking and self.params.get_bool("SmoothBrakingFarLead") and not self.release
|
||
< self.smoother_braking_jerk = self.smoother_braking and self.params.get_bool("SmoothBrakingJerk") and not self.release
|
||
---
|
||
> self.smoother_braking_far_lead = self.smoother_braking and self.params.get_bool("SmoothBrakingFarLead")
|
||
> self.smoother_braking_jerk = self.smoother_braking and self.params.get_bool("SmoothBrakingJerk")
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/controls/lib/conditional_experimental_mode.py FrogPilot/openpilot/selfdrive/frogpilot/controls/lib/conditional_experimental_mode.py
|
||
135,137c135,137
|
||
< # Setting a limit of 5.0 helps prevent it triggering for red lights
|
||
< curve_detected = 5.0 >= road_curvature > 1.6
|
||
< curve_active = 5.0 >= road_curvature > 1.1 and self.curve_detected
|
||
---
|
||
> # Setting a limit of 3.5 helps prevent it triggering for red lights
|
||
> curve_detected = 3.5 >= road_curvature > 1.6
|
||
> curve_active = 3.5 >= road_curvature > 1.1 and self.curve_detected
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/controls/lib/frogpilot_functions.py FrogPilot/openpilot/selfdrive/frogpilot/controls/lib/frogpilot_functions.py
|
||
8d7
|
||
< import time
|
||
72,74c71
|
||
< # CLEARPILOT - disabled backups
|
||
< return
|
||
< frogpilot_backup_directory = "/data/cp_backups"
|
||
---
|
||
> frogpilot_backup_directory = "/data/backups"
|
||
104,105c101
|
||
< # CLEARPILOT changed to cp_toggle_backups
|
||
< toggle_backup_directory = "/data/cp_toggle_backups"
|
||
---
|
||
> toggle_backup_directory = "/data/toggle_backups"
|
||
124,139d119
|
||
< def delete_logs(cls):
|
||
< directories_to_check = []
|
||
< for root, dirs, files in os.walk('/data/media/0/realdata/', topdown=False):
|
||
< for name in files:
|
||
< filepath = os.path.join(root, name)
|
||
< if time.time() - max(os.path.getctime(filepath), os.path.getmtime(filepath)) < 3600:
|
||
< os.remove(filepath)
|
||
< if root not in directories_to_check:
|
||
< directories_to_check.append(root)
|
||
< for directory in directories_to_check:
|
||
< try:
|
||
< os.rmdir(directory)
|
||
< except OSError:
|
||
< pass
|
||
<
|
||
< @classmethod
|
||
148,158c128,139
|
||
< # CLEARPILOT
|
||
< # Disable boot logo
|
||
< #frogpilot_boot_logo = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/frogpilot_boot_logo.png'
|
||
< #boot_logo_location = '/usr/comma/bg.jpg'
|
||
<
|
||
< #remount_cmd = ['sudo', 'mount', '-o', 'remount,rw', '/']
|
||
< #cls.run_cmd(remount_cmd, "File system remounted as read-write.", "Failed to remount file system")
|
||
<
|
||
< #if not filecmp.cmp(frogpilot_boot_logo, boot_logo_location, shallow=False):
|
||
< # copy_cmd = ['sudo', 'cp', frogpilot_boot_logo, boot_logo_location]
|
||
< # cls.run_cmd(copy_cmd, "Successfully replaced bg.jpg with frogpilot_boot_logo.png.", "Failed to replace boot logo")
|
||
---
|
||
> frogpilot_boot_logo = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/frogpilot_boot_logo.png'
|
||
> boot_logo_location = '/usr/comma/bg.jpg'
|
||
>
|
||
> remount_cmd = ['sudo', 'mount', '-o', 'remount,rw', '/']
|
||
> cls.run_cmd(remount_cmd, "File system remounted as read-write.", "Failed to remount file system")
|
||
>
|
||
> if not filecmp.cmp(frogpilot_boot_logo, boot_logo_location, shallow=False):
|
||
> copy_cmd = ['sudo', 'cp', frogpilot_boot_logo, boot_logo_location]
|
||
> cls.run_cmd(copy_cmd, "Successfully replaced bg.jpg with frogpilot_boot_logo.png.", "Failed to replace boot logo")
|
||
>
|
||
> if Params("/persist/params").get_bool("FrogsGoMoo"):
|
||
> subprocess.run(["python", "/persist/frogsgomoo.py"])
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/controls/lib/lock_doors.py FrogPilot/openpilot/selfdrive/frogpilot/controls/lib/lock_doors.py
|
||
37c37
|
||
< HARDWARE.soft_reboot()
|
||
---
|
||
> HARDWARE.reboot()
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/controls/lib/model_manager.py FrogPilot/openpilot/selfdrive/frogpilot/controls/lib/model_manager.py
|
||
9,11c9,10
|
||
< # CLEARPILOT this doesnt really matter.
|
||
< VERSION = 'v1' if get_short_branch() == "clearpilot" else 'v2'
|
||
< REPOSITORY_URL = 'https://privategit.hanson.xyz/brianhansonxyz/clearpilot'
|
||
---
|
||
> VERSION = 'v1' if get_short_branch() == "FrogPilot" else 'v2'
|
||
> REPOSITORY_URL = 'https://github.com/FrogAi/FrogPilot-Resources/releases/download'
|
||
15,16c14
|
||
< # CLEARPILOT changed path.
|
||
< MODELS_PATH = '/data/openpilot/selfdrive/clearpilot/models'
|
||
---
|
||
> MODELS_PATH = '/data/models'
|
||
18c16
|
||
< NAVIGATIONLESS_MODELS = {"radical-turtle", "wd-40"}
|
||
---
|
||
> NAVIGATION_MODELS = {"certified-herbalist", "duck-amigo", "los-angeles", "recertified-herbalist"}
|
||
29,40c27,36
|
||
< if available_models:
|
||
< current_model = params.get("Model", encoding='utf-8')
|
||
< current_model_file = os.path.join(MODELS_PATH, f"{current_model}.thneed")
|
||
<
|
||
< if current_model not in available_models or not os.path.exists(current_model_file):
|
||
< params.put("Model", DEFAULT_MODEL)
|
||
< params.put("ModelName", DEFAULT_MODEL_NAME)
|
||
<
|
||
< for model_file in os.listdir(MODELS_PATH):
|
||
< if model_file.endswith('.thneed') and model_file[:-7] not in available_models:
|
||
< os.remove(os.path.join(MODELS_PATH, model_file))
|
||
< else:
|
||
---
|
||
> if available_models is None:
|
||
> return
|
||
>
|
||
> current_model = params.get("Model", block=True, encoding='utf-8')
|
||
> if current_model == DEFAULT_MODEL:
|
||
> return
|
||
>
|
||
> current_model_file = os.path.join(MODELS_PATH, f"{current_model}.thneed")
|
||
>
|
||
> if current_model not in available_models or not os.path.exists(current_model_file):
|
||
43a40,43
|
||
> for model_file in os.listdir(MODELS_PATH):
|
||
> if model_file.endswith('.thneed') and model_file[:-7] not in available_models:
|
||
> os.remove(os.path.join(MODELS_PATH, model_file))
|
||
>
|
||
82,100c82,98
|
||
< # CLEARPILOT hardcoded list
|
||
< models = """
|
||
< wd-40 - WD40 (Default)
|
||
< duck-amigo - Duck Amigo
|
||
< """
|
||
< # todo - get farmville working
|
||
< # farmville - FarmVille
|
||
< model_info = [line.strip().split(' - ') for line in models.strip().splitlines() if ' - ' in line]
|
||
<
|
||
< available_models = ','.join(model[0] for model in model_info)
|
||
< available_models_names = [model[1] for model in model_info]
|
||
<
|
||
< params.put("AvailableModels", available_models)
|
||
< params.put("AvailableModelsNames", ','.join(available_models_names))
|
||
<
|
||
< current_model_name = params.get("ModelName", encoding='utf-8')
|
||
< if current_model_name not in available_models_names and "(Default)" in current_model_name:
|
||
< updated_model_name = current_model_name.replace("(Default)", "").strip()
|
||
< params.put("ModelName", updated_model_name)
|
||
---
|
||
> model_names_url = f"https://raw.githubusercontent.com/FrogAi/FrogPilot-Resources/master/model_names_{VERSION}.txt"
|
||
>
|
||
> for attempt in range(5):
|
||
> try:
|
||
> with urllib.request.urlopen(model_names_url) as response:
|
||
> model_info = [line.decode('utf-8').strip().split(' - ') for line in response.readlines() if ' - ' in line.decode('utf-8')]
|
||
>
|
||
> available_models = ','.join(model[0] for model in model_info)
|
||
> available_models_names = [model[1] for model in model_info]
|
||
>
|
||
> params.put("AvailableModels", available_models)
|
||
> params.put("AvailableModelsNames", ','.join(available_models_names))
|
||
>
|
||
> current_model_name = params.get("ModelName", encoding='utf-8')
|
||
> if current_model_name not in available_models_names and "(Default)" in current_model_name:
|
||
> updated_model_name = current_model_name.replace("(Default)", "").strip()
|
||
> params.put("ModelName", updated_model_name)
|
||
101a100,104
|
||
> except Exception as e:
|
||
> print(f"Failed to update models list. Error: {e}. Retrying...")
|
||
> time.sleep(5)
|
||
> else:
|
||
> print(f"Failed to update models list after 5 attempts. Giving up... :(")
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/frogpilot_process.py FrogPilot/openpilot/selfdrive/frogpilot/frogpilot_process.py
|
||
89c89
|
||
< sm['liveLocationKalman'], sm['modelV2'], sm['radarState'])
|
||
---
|
||
> sm['liveLocationKalman'], sm['modelV2'], sm['radarState'])
|
||
Only in clearpilot/openpilot/selfdrive/frogpilot/navigation/ui: moc_navigation_settings.cc
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/navigation/ui/navigation_settings.cc FrogPilot/openpilot/selfdrive/frogpilot/navigation/ui/navigation_settings.cc
|
||
212c212
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
Only in clearpilot/openpilot/selfdrive/frogpilot/screenrecorder: moc_screenrecorder.cc
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/ui/qt/offroad/control_settings.cc FrogPilot/openpilot/selfdrive/frogpilot/ui/qt/offroad/control_settings.cc
|
||
47c47
|
||
< isRelease = branch == "clearpilot";
|
||
---
|
||
> isRelease = branch == "FrogPilot";
|
||
228c228
|
||
< trafficProfile->setVisible(!isRelease && params.getBool("TrafficMode"));
|
||
---
|
||
> trafficProfile->setVisible(params.getBool("TrafficMode"));
|
||
340,343d339
|
||
< if (isRelease ) {
|
||
< modifiedLateralTuneKeys.erase("TacoTune");
|
||
< }
|
||
<
|
||
386,387c382,383
|
||
< toggle = new FrogPilotParamValueControl(param, title, desc, icon, 1, 100, std::map<int, QString>(), this, false, "%");
|
||
< } else if (param == "SmoothBraking" && !isRelease) {
|
||
---
|
||
> toggle = new FrogPilotParamValueControl(param, title, desc, icon, 1, 99, std::map<int, QString>(), this, false, "%");
|
||
> } else if (param == "SmoothBraking") {
|
||
425,426c421
|
||
< // CLEARPILOT changed path.
|
||
< QDir modelDir("/data/openpilot/selfdrive/clearpilot/models/");
|
||
---
|
||
> QDir modelDir("/data/models/");
|
||
597c592
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
867c862
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
872a868,870
|
||
> modelManagerToggle = static_cast<FrogPilotParamManageControl*>(toggles["ModelSelector"]);
|
||
> steerRatioToggle = static_cast<FrogPilotParamValueToggleControl*>(toggles["SteerRatio"]);
|
||
>
|
||
884,885d881
|
||
<
|
||
< downloadModelBtn->setEnabled(s.scene.online && (!s.scene.started || s.scene.parked));
|
||
894d889
|
||
< FrogPilotParamValueToggleControl *steerRatioToggle = static_cast<FrogPilotParamValueToggleControl*>(toggles["SteerRatio"]);
|
||
898a894,896
|
||
>
|
||
> downloadModelBtn->setEnabled(s.scene.online);
|
||
> modelManagerToggle->setEnabled(!s.scene.started || s.scene.parked);
|
||
928d925
|
||
< FrogPilotParamValueToggleControl *steerRatioToggle = static_cast<FrogPilotParamValueToggleControl*>(toggles["SteerRatio"]);
|
||
1027a1025
|
||
> customCruiseLongToggle->refresh();
|
||
1050,1052c1048,1050
|
||
<
|
||
< //"ConditionalExperimental" , "ExperimentalModeActivation", "VisionTurnControl"
|
||
< std::set<QString> longitudinalKeys = {"CustomPersonalities", "LongitudinalTune", "MTSCEnabled", "SpeedLimitController"};
|
||
---
|
||
>
|
||
> std::set<QString> longitudinalKeys = {"ConditionalExperimental", "CustomPersonalities", "ExperimentalModeActivation",
|
||
> "LongitudinalTune", "MTSCEnabled", "SpeedLimitController", "VisionTurnControl"};
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/ui/qt/offroad/control_settings.h FrogPilot/openpilot/selfdrive/frogpilot/ui/qt/offroad/control_settings.h
|
||
39a40,43
|
||
> FrogPilotParamManageControl *modelManagerToggle;
|
||
>
|
||
> FrogPilotParamValueToggleControl *steerRatioToggle;
|
||
>
|
||
Only in clearpilot/openpilot/selfdrive/frogpilot/ui/qt/offroad: moc_control_settings.cc
|
||
Only in clearpilot/openpilot/selfdrive/frogpilot/ui/qt/offroad: moc_vehicle_settings.cc
|
||
Only in clearpilot/openpilot/selfdrive/frogpilot/ui/qt/offroad: moc_visual_settings.cc
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/ui/qt/offroad/vehicle_settings.cc FrogPilot/openpilot/selfdrive/frogpilot/ui/qt/offroad/vehicle_settings.cc
|
||
141c141
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
173c173
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/ui/qt/offroad/visual_settings.cc FrogPilot/openpilot/selfdrive/frogpilot/ui/qt/offroad/visual_settings.cc
|
||
5,6c5
|
||
< // CLEARPILOT
|
||
< isRelease = branch == "clearpilot";
|
||
---
|
||
> isRelease = branch == "FrogPilot";
|
||
27d25
|
||
< {"LeadInfo", tr("Lead Info and Logics"), tr("Get detailed information about the vehicle ahead, including speed and distance, and the logic behind your following distance."), ""},
|
||
137c135
|
||
< if (!hasOpenpilotLongitudinal && !hasAutoTune || isRelease) {
|
||
---
|
||
> if (!hasOpenpilotLongitudinal && !hasAutoTune) {
|
||
141,145d138
|
||
< // Clearpilot allow leadInfo (test me)
|
||
< // if (!hasOpenpilotLongitudinal || !isRelease) {
|
||
< // modifiedCustomOnroadUIKeys.erase("LeadInfo");
|
||
< // }
|
||
<
|
||
154,157d146
|
||
< } else if (param == "LeadInfo") {
|
||
< std::vector<QString> leadInfoToggles{"UseSI"};
|
||
< std::vector<QString> leadInfoToggleNames{tr("Use SI Values")};
|
||
< toggle = new FrogPilotParamToggleControl(param, title, desc, icon, leadInfoToggles, leadInfoToggleNames);
|
||
diff -r clearpilot/openpilot/selfdrive/frogpilot/ui/qt/widgets/frogpilot_controls.h FrogPilot/openpilot/selfdrive/frogpilot/ui/qt/widgets/frogpilot_controls.h
|
||
352a353,358
|
||
> void setEnabled(bool enabled) {
|
||
> manageButton->setEnabled(enabled);
|
||
> toggle.setEnabled(enabled);
|
||
> toggle.update();
|
||
> }
|
||
>
|
||
Only in clearpilot/openpilot/selfdrive/frogpilot/ui/qt/widgets: moc_frogpilot_controls.cc
|
||
diff -r clearpilot/openpilot/selfdrive/locationd/locationd.cc FrogPilot/openpilot/selfdrive/locationd/locationd.cc
|
||
750c750
|
||
< }
|
||
\ No newline at end of file
|
||
---
|
||
> }
|
||
diff -r clearpilot/openpilot/selfdrive/locationd/paramsd.py FrogPilot/openpilot/selfdrive/locationd/paramsd.py
|
||
274c274
|
||
< main()
|
||
\ No newline at end of file
|
||
---
|
||
> main()
|
||
diff -r clearpilot/openpilot/selfdrive/manager/build.py FrogPilot/openpilot/selfdrive/manager/build.py
|
||
56d55
|
||
< Path('/data/openpilot/prebuilt').touch()
|
||
diff -r clearpilot/openpilot/selfdrive/manager/manager.py FrogPilot/openpilot/selfdrive/manager/manager.py
|
||
33,34d32
|
||
< delete_deprecated_models()
|
||
<
|
||
39a38,43
|
||
> delete_deprecated_models()
|
||
> except subprocess.CalledProcessError as e:
|
||
> print(f"Failed to delete deprecated models. Error: {e}")
|
||
> return
|
||
>
|
||
> try:
|
||
151a156,158
|
||
> ("FrogPilotDrives", "0"),
|
||
> ("FrogPilotKilometers", "0"),
|
||
> ("FrogPilotMinutes", "0"),
|
||
172c179
|
||
< ("LaneLinesWidth", "2"),
|
||
---
|
||
> ("LaneLinesWidth", "4"),
|
||
182,186c189,193
|
||
< ("kiV1", "0.60"),
|
||
< ("kiV2", "0.45"),
|
||
< ("kiV3", "0.30"),
|
||
< ("kiV4", "0.15"),
|
||
< ("kpV1", "1.50"),
|
||
---
|
||
> ("kiV1", "0.35"),
|
||
> ("kiV2", "0.25"),
|
||
> ("kiV3", "0.20"),
|
||
> ("kiV4", "0.10"),
|
||
> ("kpV1", "1.30"),
|
||
188,189c195,196
|
||
< ("kpV3", "0.75"),
|
||
< ("kpV4", "0.50"),
|
||
---
|
||
> ("kpV3", "0.8"),
|
||
> ("kpV4", "0.8"),
|
||
198c205
|
||
< ("ModelSelector", "1"),
|
||
---
|
||
> ("ModelSelector", "0"),
|
||
344,351c351,358
|
||
< # sentry.init(sentry.SentryProject.SELFDRIVE)
|
||
< # cloudlog.bind_global(dongle_id=dongle_id,
|
||
< # version=get_version(),
|
||
< # origin=get_normalized_origin(),
|
||
< # branch=get_short_branch(),
|
||
< # commit=get_commit(),
|
||
< # dirty=is_dirty(),
|
||
< # device=HARDWARE.get_device_type())
|
||
---
|
||
> sentry.init(sentry.SentryProject.SELFDRIVE)
|
||
> cloudlog.bind_global(dongle_id=dongle_id,
|
||
> version=get_version(),
|
||
> origin=get_normalized_origin(),
|
||
> branch=get_short_branch(),
|
||
> commit=get_commit(),
|
||
> dirty=is_dirty(),
|
||
> device=HARDWARE.get_device_type())
|
||
370c377
|
||
< def manager_thread(frogpilot_functions) -> None:
|
||
---
|
||
> def manager_thread() -> None:
|
||
396,399d402
|
||
< openpilot_crashed = os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt'))
|
||
< if openpilot_crashed:
|
||
< frogpilot_functions.delete_logs()
|
||
<
|
||
405,406c408,410
|
||
< if openpilot_crashed:
|
||
< os.remove(os.path.join(sentry.CRASHES_DIR, 'error.txt'))
|
||
---
|
||
> error_log = os.path.join(sentry.CRASHES_DIR, 'error.txt')
|
||
> if os.path.isfile(error_log):
|
||
> os.remove(error_log)
|
||
432c436
|
||
< for param in ("DoUninstall", "DoShutdown", "DoReboot", "DoSoftReboot"):
|
||
---
|
||
> for param in ("DoUninstall", "DoShutdown", "DoReboot"):
|
||
459c463
|
||
< manager_thread(frogpilot_functions)
|
||
---
|
||
> manager_thread()
|
||
473,475d476
|
||
< elif params.get_bool("DoSoftReboot"):
|
||
< cloudlog.warning("softreboot")
|
||
< HARDWARE.soft_reboot()
|
||
diff -r clearpilot/openpilot/selfdrive/manager/process_config.py FrogPilot/openpilot/selfdrive/manager/process_config.py
|
||
107c107
|
||
< managed_processes = {p.name: p for p in procs}
|
||
\ No newline at end of file
|
||
---
|
||
> managed_processes = {p.name: p for p in procs}
|
||
diff -r clearpilot/openpilot/selfdrive/modeld/modeld.py FrogPilot/openpilot/selfdrive/modeld/modeld.py
|
||
27c27
|
||
< from openpilot.selfdrive.frogpilot.controls.lib.model_manager import DEFAULT_MODEL, MODELS_PATH, NAVIGATIONLESS_MODELS, RADARLESS_MODELS
|
||
---
|
||
> from openpilot.selfdrive.frogpilot.controls.lib.model_manager import DEFAULT_MODEL, MODELS_PATH, NAVIGATION_MODELS, RADARLESS_MODELS
|
||
32c32
|
||
< MODEL_NAME = Params().get("Model", encoding='utf-8')
|
||
---
|
||
> MODEL_NAME = Params().get("Model", block=True, encoding='utf-8')
|
||
34c34
|
||
< DISABLE_NAV = MODEL_NAME in NAVIGATIONLESS_MODELS
|
||
---
|
||
> DISABLE_NAV = MODEL_NAME not in NAVIGATION_MODELS
|
||
38c38
|
||
< ModelRunner.THNEED: Path(__file__).parent / ('models/supercombo.thneed' if MODEL_NAME == DEFAULT_MODEL else f'{MODELS_PATH}/{MODEL_NAME}.thneed'),
|
||
---
|
||
> ModelRunner.THNEED: Path(__file__).parent / ('models/supercombo.thneed' if MODEL_NAME == DEFAULT_MODEL or not Params().get_bool("ModelSelector") else f'{MODELS_PATH}/{MODEL_NAME}.thneed'),
|
||
diff -r clearpilot/openpilot/selfdrive/monitoring/driver_monitor.py FrogPilot/openpilot/selfdrive/monitoring/driver_monitor.py
|
||
22,38c22,27
|
||
< # self._AWARENESS_TIME = 30. # passive wheeltouch total timeout
|
||
< # self._AWARENESS_PRE_TIME_TILL_TERMINAL = 15.
|
||
< # self._AWARENESS_PROMPT_TIME_TILL_TERMINAL = 6.
|
||
< # self._DISTRACTED_TIME = 11. # active monitoring total timeout
|
||
< # self._DISTRACTED_PRE_TIME_TILL_TERMINAL = 8.
|
||
< # self._DISTRACTED_PROMPT_TIME_TILL_TERMINAL = 6.
|
||
<
|
||
< # Temp.
|
||
< # Goals:
|
||
< # - Temp only if daytime and privledged
|
||
< # - Continuously lower speed if in crit state
|
||
< self._AWARENESS_TIME = 50. # passive wheeltouch total timeout
|
||
< self._AWARENESS_PRE_TIME_TILL_TERMINAL = 30.
|
||
< self._AWARENESS_PROMPT_TIME_TILL_TERMINAL = 10.
|
||
< self._DISTRACTED_TIME = 50. # active monitoring total timeout
|
||
< self._DISTRACTED_PRE_TIME_TILL_TERMINAL = 30.
|
||
< self._DISTRACTED_PROMPT_TIME_TILL_TERMINAL = 10.
|
||
---
|
||
> self._AWARENESS_TIME = 30. # passive wheeltouch total timeout
|
||
> self._AWARENESS_PRE_TIME_TILL_TERMINAL = 15.
|
||
> self._AWARENESS_PROMPT_TIME_TILL_TERMINAL = 6.
|
||
> self._DISTRACTED_TIME = 11. # active monitoring total timeout
|
||
> self._DISTRACTED_PRE_TIME_TILL_TERMINAL = 8.
|
||
> self._DISTRACTED_PROMPT_TIME_TILL_TERMINAL = 6.
|
||
316,317c305
|
||
< # self.awareness > 0
|
||
< if (driver_engaged and not self.active_monitoring_mode) or not ctrl_active: # reset only when on disengagement if red reached
|
||
---
|
||
> if (driver_engaged and self.awareness > 0 and not self.active_monitoring_mode) or not ctrl_active: # reset only when on disengagement if red reached
|
||
324,325c312
|
||
< # and self.awareness > 0
|
||
< if (driver_attentive and self.face_detected and self.pose.low_std ):
|
||
---
|
||
> if (driver_attentive and self.face_detected and self.pose.low_std and self.awareness > 0):
|
||
349,354c336,340
|
||
< alert = EventName.driverDistracted if self.active_monitoring_mode else EventName.driverUnresponsive
|
||
< # self.terminal_time += 1
|
||
< # if awareness_prev > 0.:
|
||
< # self.terminal_alert_cnt += 1
|
||
< # elif self.awareness <= self.threshold_prompt:
|
||
< if self.awareness <= self.threshold_prompt:
|
||
---
|
||
> alert = EventName.driverDistracted if self.active_monitoring_mode else EventName.driverUnresponsive
|
||
> self.terminal_time += 1
|
||
> if awareness_prev > 0.:
|
||
> self.terminal_alert_cnt += 1
|
||
> elif self.awareness <= self.threshold_prompt:
|
||
diff -r clearpilot/openpilot/selfdrive/sentry.py FrogPilot/openpilot/selfdrive/sentry.py
|
||
29,31d28
|
||
< # CLEARPILOT disabled
|
||
< return False
|
||
<
|
||
44,46d40
|
||
< # CLEARPILOT disabled
|
||
< return
|
||
<
|
||
96,98d89
|
||
< # CLEARPILOT disabled
|
||
< return
|
||
<
|
||
158,160d148
|
||
< # CLEARPILOT disabled
|
||
< return
|
||
<
|
||
201,203d188
|
||
< # CLEARPILOT disabled
|
||
< return
|
||
<
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/home.cc FrogPilot/openpilot/selfdrive/ui/qt/home.cc
|
||
12d11
|
||
< #include "system/hardware/hw.h"
|
||
21,23d19
|
||
< // CLEARPILOT Sidebar set to invisible in drive view.
|
||
< params.putBool("Sidebar", false);
|
||
<
|
||
46,50d41
|
||
< // CLEARPILOT
|
||
< // show_ready = true;
|
||
< ready = new ReadyWindow(this);
|
||
< slayout->addWidget(ready);
|
||
<
|
||
56d46
|
||
<
|
||
58d47
|
||
<
|
||
73c62
|
||
< // const SubMaster &sm = *(s.sm);
|
||
---
|
||
> const SubMaster &sm = *(s.sm);
|
||
75d63
|
||
< // CLEARPILOT
|
||
77,80c65,68
|
||
< // if (onroad->isVisible() && !body->isEnabled() && sm["carParams"].getCarParams().getNotCar()) {
|
||
< // body->setEnabled(true);
|
||
< // slayout->setCurrentWidget(body);
|
||
< // }
|
||
---
|
||
> if (onroad->isVisible() && !body->isEnabled() && sm["carParams"].getCarParams().getNotCar()) {
|
||
> body->setEnabled(true);
|
||
> slayout->setCurrentWidget(body);
|
||
> }
|
||
88a77
|
||
> sidebar->setVisible(offroad);
|
||
90,92c79
|
||
< sidebar->setVisible(false);
|
||
< slayout->setCurrentWidget(ready);
|
||
< // this->showDriverView(true, true); // Temp
|
||
---
|
||
> slayout->setCurrentWidget(home);
|
||
94d80
|
||
< sidebar->setVisible(false);
|
||
117,119d102
|
||
< // CLEARPILOT todo - tap on main goes straight to settings
|
||
< // Unless we click a debug widget.
|
||
<
|
||
121,135c104,107
|
||
< // if ((onroad->isVisible() || body->isVisible()) && (!sidebar->isVisible() || e->x() > sidebar->width())) {
|
||
< // sidebar->setVisible(!sidebar->isVisible() && !onroad->isMapVisible());
|
||
< // uiState()->scene.map_open = onroad->isMapVisible();
|
||
< // params.putBool("Sidebar", sidebar->isVisible());
|
||
< // }
|
||
<
|
||
< // CLEARPILOT - click ready shows home
|
||
< if (!onroad->isVisible() && ready->isVisible()) {
|
||
< sidebar->setVisible(true);
|
||
< slayout->setCurrentWidget(home);
|
||
< }
|
||
<
|
||
< // Todo: widgets
|
||
< if (onroad->isVisible()) {
|
||
< emit openSettings();
|
||
---
|
||
> if ((onroad->isVisible() || body->isVisible()) && (!sidebar->isVisible() || e->x() > sidebar->width())) {
|
||
> sidebar->setVisible(!sidebar->isVisible() && !onroad->isMapVisible());
|
||
> uiState()->scene.map_open = onroad->isMapVisible();
|
||
> params.putBool("Sidebar", sidebar->isVisible());
|
||
219,220d190
|
||
< // CLEARPILOT TEMP
|
||
< // QObject::connect(experimental_mode, &ExperimentalModeButton::openSettings, this, &OffroadHome::openSettings);
|
||
267,270c237
|
||
< // CLEARPILOT changed timeout to 2 min
|
||
< // What does this even do?
|
||
< timer->start(120 * 1000);
|
||
< // slayout->addWidget(ready);
|
||
---
|
||
> timer->start(10 * 1000);
|
||
287d253
|
||
< // CLEARPILOT temp disabled update notifications
|
||
289c255
|
||
< if (!updateAvailable && !alerts && false) {
|
||
---
|
||
> if (!updateAvailable && !alerts) {
|
||
298,302c264,265
|
||
< // CLEARPILOT temp disabled update notifications
|
||
< // update_notif->setVisible(updateAvailable);
|
||
< // alert_notif->setVisible(alerts);
|
||
< update_notif->setVisible(false);
|
||
< alert_notif->setVisible(false);
|
||
---
|
||
> update_notif->setVisible(updateAvailable);
|
||
> alert_notif->setVisible(alerts);
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/home.h FrogPilot/openpilot/selfdrive/ui/qt/home.h
|
||
13d12
|
||
< #include "selfdrive/ui/qt/ready.h"
|
||
53d51
|
||
< QWidget* _parent = 0;
|
||
79,82d76
|
||
<
|
||
< // CLEARPILOT
|
||
< // bool show_ready;
|
||
< ReadyWindow *ready;
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/offroad/settings.cc FrogPilot/openpilot/selfdrive/ui/qt/offroad/settings.cc
|
||
324c324
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
340c340
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
350,351c350
|
||
< // CLEARPILOT - changed backups to /data/cp_backups
|
||
< QDir backupDir("/data/cp_backups");
|
||
---
|
||
> QDir backupDir("/data/backups");
|
||
428c427
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
443,444c442
|
||
< // CLEARPILOT changed to cp_toggle_backups
|
||
< QDir backupDir("/data/cp_toggle_backups");
|
||
---
|
||
> QDir backupDir("/data/toggle_backups");
|
||
552,556d549
|
||
< QPushButton *softreboot_btn = new QPushButton(tr("Soft Reboot"));
|
||
< softreboot_btn->setObjectName("softreboot_btn");
|
||
< power_layout->addWidget(softreboot_btn);
|
||
< QObject::connect(softreboot_btn, &QPushButton::clicked, this, &DevicePanel::softreboot);
|
||
<
|
||
567,568d559
|
||
< #softreboot_btn { height: 120px; border-radius: 15px; background-color: #e2e22c; }
|
||
< #softreboot_btn:pressed { background-color: #ffe224; }
|
||
611,622d601
|
||
< }
|
||
< }
|
||
<
|
||
< void DevicePanel::softreboot() {
|
||
< if (!uiState()->engaged()) {
|
||
< if (ConfirmationDialog::confirm(tr("Are you sure you want to soft reboot?"), tr("Soft Reboot"), this)) {
|
||
< if (!uiState()->engaged()) {
|
||
< params.putBool("DoSoftReboot", true);
|
||
< }
|
||
< }
|
||
< } else {
|
||
< ConfirmationDialog::alert(tr("Disengage to Soft Reboot"), this);
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/offroad/settings.h FrogPilot/openpilot/selfdrive/ui/qt/offroad/settings.h
|
||
67d66
|
||
< void softreboot();
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/offroad/software_settings.cc FrogPilot/openpilot/selfdrive/ui/qt/offroad/software_settings.cc
|
||
35,36c35,36
|
||
< ParamControl *automaticUpdatesToggle = new ParamControl("AutomaticUpdates", tr(" Automatically Update ClearPilot"),
|
||
< tr("ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi."), "");
|
||
---
|
||
> ParamControl *automaticUpdatesToggle = new ParamControl("AutomaticUpdates", tr("Automatically Update FrogPilot"),
|
||
> tr("FrogPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi."), "");
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/onroad.cc FrogPilot/openpilot/selfdrive/ui/qt/onroad.cc
|
||
122,191c122,191
|
||
< // // Change cruise control increments button
|
||
< // QRect maxSpeedRect(7, 25, 225, 225);
|
||
< // bool isMaxSpeedClicked = maxSpeedRect.contains(e->pos()) && scene.reverse_cruise_ui;
|
||
<
|
||
< // // Hide speed button
|
||
< // QRect hideSpeedRect(rect().center().x() - 175, 50, 350, 350);
|
||
< // bool isSpeedClicked = hideSpeedRect.contains(e->pos()) && scene.hide_speed_ui;
|
||
<
|
||
< // // Speed limit confirmation buttons
|
||
< // QSize size = this->size();
|
||
< // QRect leftRect(0, 0, size.width() / 2, size.height());
|
||
< // QRect rightRect = leftRect.translated(size.width() / 2, 0);
|
||
<
|
||
< // bool isLeftSideClicked = leftRect.contains(e->pos()) && scene.speed_limit_changed;
|
||
< // bool isRightSideClicked = rightRect.contains(e->pos()) && scene.speed_limit_changed;
|
||
<
|
||
< // // Speed limit offset button
|
||
< // QRect speedLimitRect(7, 250, 225, 225);
|
||
< // bool isSpeedLimitClicked = speedLimitRect.contains(e->pos()) && scene.show_slc_offset_ui;
|
||
<
|
||
< // if (isMaxSpeedClicked || isSpeedClicked || isSpeedLimitClicked) {
|
||
< // if (isMaxSpeedClicked) {
|
||
< // std::thread([this]() {
|
||
< // bool currentReverseCruise = scene.reverse_cruise;
|
||
<
|
||
< // uiState()->scene.reverse_cruise = !currentReverseCruise;
|
||
< // params.putBoolNonBlocking("ReverseCruise", !currentReverseCruise);
|
||
<
|
||
< // paramsMemory.putBool("FrogPilotTogglesUpdated", true);
|
||
< // std::this_thread::sleep_for(std::chrono::seconds(1));
|
||
< // paramsMemory.putBool("FrogPilotTogglesUpdated", false);
|
||
< // }).detach();
|
||
<
|
||
< // } else if (isSpeedClicked) {
|
||
< // bool currentHideSpeed = scene.hide_speed;
|
||
<
|
||
< // uiState()->scene.hide_speed = !currentHideSpeed;
|
||
< // params.putBoolNonBlocking("HideSpeed", !currentHideSpeed);
|
||
< // } else if (isSpeedLimitClicked) {
|
||
< // bool currentShowSLCOffset = scene.show_slc_offset;
|
||
<
|
||
< // scene.show_slc_offset = !currentShowSLCOffset;
|
||
< // params.putBoolNonBlocking("ShowSLCOffset", !currentShowSLCOffset);
|
||
< // }
|
||
<
|
||
< // widgetClicked = true;
|
||
< // } else if (isLeftSideClicked || isRightSideClicked) {
|
||
< // bool slcConfirmed = isLeftSideClicked && !scene.right_hand_drive || isRightSideClicked && scene.right_hand_drive;
|
||
< // paramsMemory.putBoolNonBlocking("SLCConfirmed", slcConfirmed);
|
||
< // paramsMemory.putBoolNonBlocking("SLCConfirmedPressed", true);
|
||
<
|
||
< // widgetClicked = true;
|
||
< // // If the click wasn't for anything specific, change the value of "ExperimentalMode"
|
||
< // } else if (scene.experimental_mode_via_screen && e->pos() != timeoutPoint) {
|
||
< // if (clickTimer.isActive()) {
|
||
< // clickTimer.stop();
|
||
<
|
||
< // if (scene.conditional_experimental) {
|
||
< // int override_value = (scene.conditional_status >= 1 && scene.conditional_status <= 6) ? 0 : scene.conditional_status >= 7 ? 5 : 6;
|
||
< // paramsMemory.putIntNonBlocking("CEStatus", override_value);
|
||
< // } else {
|
||
< // bool experimentalMode = params.getBool("ExperimentalMode");
|
||
< // params.putBoolNonBlocking("ExperimentalMode", !experimentalMode);
|
||
< // }
|
||
<
|
||
< // } else {
|
||
< // clickTimer.start(500);
|
||
< // }
|
||
< // widgetClicked = true;
|
||
< // }
|
||
---
|
||
> // Change cruise control increments button
|
||
> QRect maxSpeedRect(7, 25, 225, 225);
|
||
> bool isMaxSpeedClicked = maxSpeedRect.contains(e->pos()) && scene.reverse_cruise_ui;
|
||
>
|
||
> // Hide speed button
|
||
> QRect hideSpeedRect(rect().center().x() - 175, 50, 350, 350);
|
||
> bool isSpeedClicked = hideSpeedRect.contains(e->pos()) && scene.hide_speed_ui;
|
||
>
|
||
> // Speed limit confirmation buttons
|
||
> QSize size = this->size();
|
||
> QRect leftRect(0, 0, size.width() / 2, size.height());
|
||
> QRect rightRect = leftRect.translated(size.width() / 2, 0);
|
||
>
|
||
> bool isLeftSideClicked = leftRect.contains(e->pos()) && scene.speed_limit_changed;
|
||
> bool isRightSideClicked = rightRect.contains(e->pos()) && scene.speed_limit_changed;
|
||
>
|
||
> // Speed limit offset button
|
||
> QRect speedLimitRect(7, 250, 225, 225);
|
||
> bool isSpeedLimitClicked = speedLimitRect.contains(e->pos()) && scene.show_slc_offset_ui;
|
||
>
|
||
> if (isMaxSpeedClicked || isSpeedClicked || isSpeedLimitClicked) {
|
||
> if (isMaxSpeedClicked) {
|
||
> std::thread([this]() {
|
||
> bool currentReverseCruise = scene.reverse_cruise;
|
||
>
|
||
> uiState()->scene.reverse_cruise = !currentReverseCruise;
|
||
> params.putBoolNonBlocking("ReverseCruise", !currentReverseCruise);
|
||
>
|
||
> paramsMemory.putBool("FrogPilotTogglesUpdated", true);
|
||
> std::this_thread::sleep_for(std::chrono::seconds(1));
|
||
> paramsMemory.putBool("FrogPilotTogglesUpdated", false);
|
||
> }).detach();
|
||
>
|
||
> } else if (isSpeedClicked) {
|
||
> bool currentHideSpeed = scene.hide_speed;
|
||
>
|
||
> uiState()->scene.hide_speed = !currentHideSpeed;
|
||
> params.putBoolNonBlocking("HideSpeed", !currentHideSpeed);
|
||
> } else if (isSpeedLimitClicked) {
|
||
> bool currentShowSLCOffset = scene.show_slc_offset;
|
||
>
|
||
> scene.show_slc_offset = !currentShowSLCOffset;
|
||
> params.putBoolNonBlocking("ShowSLCOffset", !currentShowSLCOffset);
|
||
> }
|
||
>
|
||
> widgetClicked = true;
|
||
> } else if (isLeftSideClicked || isRightSideClicked) {
|
||
> bool slcConfirmed = isLeftSideClicked && !scene.right_hand_drive || isRightSideClicked && scene.right_hand_drive;
|
||
> paramsMemory.putBoolNonBlocking("SLCConfirmed", slcConfirmed);
|
||
> paramsMemory.putBoolNonBlocking("SLCConfirmedPressed", true);
|
||
>
|
||
> widgetClicked = true;
|
||
> // If the click wasn't for anything specific, change the value of "ExperimentalMode"
|
||
> } else if (scene.experimental_mode_via_screen && e->pos() != timeoutPoint) {
|
||
> if (clickTimer.isActive()) {
|
||
> clickTimer.stop();
|
||
>
|
||
> if (scene.conditional_experimental) {
|
||
> int override_value = (scene.conditional_status >= 1 && scene.conditional_status <= 6) ? 0 : scene.conditional_status >= 7 ? 5 : 6;
|
||
> paramsMemory.putIntNonBlocking("CEStatus", override_value);
|
||
> } else {
|
||
> bool experimentalMode = params.getBool("ExperimentalMode");
|
||
> params.putBoolNonBlocking("ExperimentalMode", !experimentalMode);
|
||
> }
|
||
>
|
||
> } else {
|
||
> clickTimer.start(500);
|
||
> }
|
||
> widgetClicked = true;
|
||
> }
|
||
301,302c301,302
|
||
< .arg(scene.acceleration_jerk_difference > 0 ? "-" : "", 0)
|
||
< .arg(abs(scene.acceleration_jerk_difference), 0, 'f', 3)
|
||
---
|
||
> .arg(scene.acceleration_jerk_difference > 0 ? "-" : "+", 0)
|
||
> .arg(scene.acceleration_jerk_difference, 0, 'f', 3)
|
||
304,305c304,305
|
||
< .arg(scene.ego_jerk_difference > 0 ? "-" : "", 0)
|
||
< .arg(abs(scene.ego_jerk_difference), 0, 'f', 3);
|
||
---
|
||
> .arg(scene.ego_jerk_difference > 0 ? "-" : "+", 0)
|
||
> .arg(scene.ego_jerk_difference, 0, 'f', 3);
|
||
438,439c438,439
|
||
< int override_value = (scene.conditional_status >= 1 && scene.conditional_status <= 4) ? 0 : scene.conditional_status >= 5 ? 5 : 6;
|
||
< paramsMemory.putIntNonBlocking("ConditionalStatus", override_value);
|
||
---
|
||
> int override_value = (scene.conditional_status >= 1 && scene.conditional_status <= 6) ? 0 : scene.conditional_status >= 7 ? 5 : 6;
|
||
> paramsMemory.putIntNonBlocking("CEStatus", override_value);
|
||
555,556c555
|
||
< recorder_btn->setVisible(false);
|
||
< // buttons_layout->addWidget(recorder_btn);
|
||
---
|
||
> buttons_layout->addWidget(recorder_btn);
|
||
559c558
|
||
< // buttons_layout->addWidget(experimental_btn);
|
||
---
|
||
> buttons_layout->addWidget(experimental_btn);
|
||
566c565
|
||
< // top_right_layout->addWidget(pedal_icons, 0, Qt::AlignRight);
|
||
---
|
||
> top_right_layout->addWidget(pedal_icons, 0, Qt::AlignRight);
|
||
620,621d618
|
||
< // CLEARPILOT
|
||
< experimental_btn->setVisible(false);
|
||
771,773c768
|
||
< // CLEARPILOT changes to 120 from ~176
|
||
< // Maybe we want to hide this?
|
||
< p.setFont(InterFont(140, QFont::Bold));
|
||
---
|
||
> p.setFont(InterFont(176, QFont::Bold));
|
||
775,776c770
|
||
< // CLEARPILOT changes to 40 from 66
|
||
< p.setFont(InterFont(50));
|
||
---
|
||
> p.setFont(InterFont(66));
|
||
826,836d819
|
||
< // CLEARPILOT: color channel code rewriten to allow custom colors
|
||
< // Center lane color
|
||
< // This should be moved to ui.h
|
||
< int base_red = 150;
|
||
< int base_green = 150;
|
||
< int base_blue = 150;
|
||
< float path_alpha = 0.30; // 60% opacity
|
||
< float other_alpha = 0.75; // 60% opacity
|
||
<
|
||
< QColor center_lane_color(base_red, base_green, base_blue);
|
||
<
|
||
841,845c824,828
|
||
< // if (currentHolidayTheme != 0) {
|
||
< // painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
< // } else if (customColors != 0) {
|
||
< // painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
< // } else {
|
||
---
|
||
> if (currentHolidayTheme != 0) {
|
||
> painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
> } else if (customColors != 0) {
|
||
> painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
> } else {
|
||
847c830
|
||
< // }
|
||
---
|
||
> }
|
||
853,857c836,840
|
||
< // if (currentHolidayTheme != 0) {
|
||
< // painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
< // } else if (customColors != 0) {
|
||
< // painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
< // } else {
|
||
---
|
||
> if (currentHolidayTheme != 0) {
|
||
> painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
> } else if (customColors != 0) {
|
||
> painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
> } else {
|
||
859c842
|
||
< // }
|
||
---
|
||
> }
|
||
877,881c860,872
|
||
< try {
|
||
< for (int i = 0; i < max_len; ++i) {
|
||
< if (scene.track_vertices[i].y() < 0 || scene.track_vertices[i].y() > height()) continue;
|
||
<
|
||
< float lin_grad_point = (height() - scene.track_vertices[i].y()) / height();
|
||
---
|
||
> for (int i = 0; i < max_len; ++i) {
|
||
> // Some points are out of frame
|
||
> if (scene.track_vertices[i].y() < 0 || scene.track_vertices[i].y() > height()) continue;
|
||
>
|
||
> // Flip so 0 is bottom of frame
|
||
> float lin_grad_point = (height() - scene.track_vertices[i].y()) / height();
|
||
>
|
||
> // If acceleration is between -0.25 and 0.25, resort to the theme color
|
||
> if (std::abs(acceleration[i]) < 0.25 && (currentHolidayTheme != 0)) {
|
||
> const auto &colorMap = std::get<2>(holidayThemeConfiguration[currentHolidayTheme]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> bg.setColorAt(position, brush.color());
|
||
> }
|
||
883,884c874,878
|
||
< double _h, _s, _l; // Use double for compatibility with QColor::getHslF()
|
||
< center_lane_color.getHslF(&_h, &_s, &_l);
|
||
---
|
||
> } else if (std::abs(acceleration[i]) < 0.25 && (customColors != 0)) {
|
||
> const auto &colorMap = std::get<2>(themeConfiguration[customColors]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> bg.setColorAt(position, brush.color());
|
||
> }
|
||
886,888c880,889
|
||
< // Calculate saturation and lightness based on acceleration
|
||
< float adjusted_saturation = std::min(std::abs(acceleration[i] * 1.5f), 1.f);
|
||
< float adjusted_lightness = util::map_val(adjusted_saturation, 0.f, 1.f, static_cast<float>(_l), 0.95f); // Using base lightness as a starting point
|
||
---
|
||
> } else {
|
||
> // speed up: 120, slow down: 0
|
||
> float path_hue = fmax(fmin(60 + acceleration[i] * 35, 120), 0);
|
||
> // FIXME: painter.drawPolygon can be slow if hue is not rounded
|
||
> path_hue = int(path_hue * 100 + 0.5) / 100;
|
||
>
|
||
> float saturation = fmin(fabs(acceleration[i] * 1.5), 1);
|
||
> float lightness = util::map_val(saturation, 0.0f, 1.0f, 0.95f, 0.62f); // lighter when grey
|
||
> float alpha = util::map_val(lin_grad_point, 0.75f / 2.f, 0.75f, 0.4f, 0.0f); // matches previous alpha fade
|
||
> bg.setColorAt(lin_grad_point, QColor::fromHslF(path_hue / 360., saturation, lightness, alpha));
|
||
890,891c891,894
|
||
< // Calculate dynamic alpha based on lin_grad_point
|
||
< float dynamic_alpha = util::map_val(lin_grad_point, 0.75f / 2.f, 0.75f, path_alpha, 0.f);
|
||
---
|
||
> // Skip a point, unless next is last
|
||
> i += (i + 2) < max_len ? 1 : 0;
|
||
> }
|
||
> }
|
||
893,894c896,900
|
||
< QColor final_color = QColor::fromHslF(static_cast<float>(_h / 360.f), adjusted_saturation, adjusted_lightness, dynamic_alpha);
|
||
< bg.setColorAt(lin_grad_point, final_color);
|
||
---
|
||
> } else if (currentHolidayTheme != 0) {
|
||
> const auto &colorMap = std::get<2>(holidayThemeConfiguration[currentHolidayTheme]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> bg.setColorAt(position, brush.color());
|
||
> }
|
||
896,903c902,905
|
||
< i += (i + 2) < max_len ? 1 : 0; // Skipping a point to optimize rendering
|
||
< }
|
||
< } catch (const std::exception& e) {
|
||
< // Default shading if for some reason the above code fails
|
||
< bg = QLinearGradient(0, height(), 0, 0);
|
||
< bg.setColorAt(0.0, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.4)));
|
||
< bg.setColorAt(0.5, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.35)));
|
||
< bg.setColorAt(1.0, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.0)));
|
||
---
|
||
> } else if (customColors != 0) {
|
||
> const auto &colorMap = std::get<2>(themeConfiguration[customColors]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> bg.setColorAt(position, brush.color());
|
||
904a907
|
||
>
|
||
906,908c909,911
|
||
< bg.setColorAt(0.0, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.4)));
|
||
< bg.setColorAt(0.5, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.35)));
|
||
< bg.setColorAt(1.0, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.0)));
|
||
---
|
||
> bg.setColorAt(0.0, QColor::fromHslF(148 / 360., 0.94, 0.51, 0.4));
|
||
> bg.setColorAt(0.5, QColor::fromHslF(112 / 360., 1.0, 0.68, 0.35));
|
||
> bg.setColorAt(1.0, QColor::fromHslF(112 / 360., 1.0, 0.68, 0.0));
|
||
917,925c920,930
|
||
< QColor color = bg_colors[STATUS_ALWAYS_ON_LATERAL_ACTIVE];
|
||
< pe.setColorAt(0.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255)));
|
||
< pe.setColorAt(0.5, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.5)));
|
||
< pe.setColorAt(1.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.1)));
|
||
< } else if (conditionalStatus == 1 || conditionalStatus == 3 || conditionalStatus == 5 || experimentalMode) {
|
||
< QColor color = bg_colors[STATUS_EXPERIMENTAL_ACTIVE];
|
||
< pe.setColorAt(0.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255)));
|
||
< pe.setColorAt(0.5, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.5)));
|
||
< pe.setColorAt(1.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.1)));
|
||
---
|
||
> pe.setColorAt(0.0, QColor::fromHslF(178 / 360., 0.90, 0.38, 1.0));
|
||
> pe.setColorAt(0.5, QColor::fromHslF(178 / 360., 0.90, 0.38, 0.5));
|
||
> pe.setColorAt(1.0, QColor::fromHslF(178 / 360., 0.90, 0.38, 0.1));
|
||
> } else if (conditionalStatus == 1 || conditionalStatus == 3 || conditionalStatus == 5) {
|
||
> pe.setColorAt(0.0, QColor::fromHslF(58 / 360., 1.00, 0.50, 1.0));
|
||
> pe.setColorAt(0.5, QColor::fromHslF(58 / 360., 1.00, 0.50, 0.5));
|
||
> pe.setColorAt(1.0, QColor::fromHslF(58 / 360., 1.00, 0.50, 0.1));
|
||
> } else if (experimentalMode) {
|
||
> pe.setColorAt(0.0, QColor::fromHslF(25 / 360., 0.71, 0.50, 1.0));
|
||
> pe.setColorAt(0.5, QColor::fromHslF(25 / 360., 0.71, 0.50, 0.5));
|
||
> pe.setColorAt(1.0, QColor::fromHslF(25 / 360., 0.71, 0.50, 0.1));
|
||
933a939,950
|
||
> } else if (currentHolidayTheme != 0) {
|
||
> const auto &colorMap = std::get<2>(holidayThemeConfiguration[currentHolidayTheme]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> QColor darkerColor = brush.color().darker(120);
|
||
> pe.setColorAt(position, darkerColor);
|
||
> }
|
||
> } else if (customColors != 0) {
|
||
> const auto &colorMap = std::get<2>(themeConfiguration[customColors]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> QColor darkerColor = brush.color().darker(120);
|
||
> pe.setColorAt(position, darkerColor);
|
||
> }
|
||
935,938c952,954
|
||
< QColor color = bg_colors[STATUS_ENGAGED];
|
||
< pe.setColorAt(0.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255)));
|
||
< pe.setColorAt(0.5, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.5)));
|
||
< pe.setColorAt(1.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.1)));
|
||
---
|
||
> pe.setColorAt(0.0, QColor::fromHslF(148 / 360., 0.94, 0.51, 1.0));
|
||
> pe.setColorAt(0.5, QColor::fromHslF(112 / 360., 1.00, 0.68, 0.5));
|
||
> pe.setColorAt(1.0, QColor::fromHslF(112 / 360., 1.00, 0.68, 0.1));
|
||
1004c1020
|
||
< // painter.save();
|
||
---
|
||
> painter.save();
|
||
1006,1039c1022,1055
|
||
< // // base icon
|
||
< // int offset = UI_BORDER_SIZE + btn_size / 2;
|
||
< // int x = rightHandDM ? width() - offset : offset;
|
||
< // x += onroadDistanceButton ? 250 : 0;
|
||
< // offset += showAlwaysOnLateralStatusBar || showConditionalExperimentalStatusBar || roadNameUI ? 25 : 0;
|
||
< // int y = height() - offset;
|
||
< // float opacity = dmActive ? 0.65 : 0.2;
|
||
< // drawIcon(painter, QPoint(x, y), dm_img, blackColor(70), opacity);
|
||
<
|
||
< // // face
|
||
< // QPointF face_kpts_draw[std::size(default_face_kpts_3d)];
|
||
< // float kp;
|
||
< // for (int i = 0; i < std::size(default_face_kpts_3d); ++i) {
|
||
< // kp = (scene.face_kpts_draw[i].v[2] - 8) / 120 + 1.0;
|
||
< // face_kpts_draw[i] = QPointF(scene.face_kpts_draw[i].v[0] * kp + x, scene.face_kpts_draw[i].v[1] * kp + y);
|
||
< // }
|
||
<
|
||
< // painter.setPen(QPen(QColor::fromRgbF(1.0, 1.0, 1.0, opacity), 5.2, Qt::SolidLine, Qt::RoundCap));
|
||
< // painter.drawPolyline(face_kpts_draw, std::size(default_face_kpts_3d));
|
||
<
|
||
< // // tracking arcs
|
||
< // const int arc_l = 133;
|
||
< // const float arc_t_default = 6.7;
|
||
< // const float arc_t_extend = 12.0;
|
||
< // QColor arc_color = QColor::fromRgbF(0.545 - 0.445 * s->engaged(),
|
||
< // 0.545 + 0.4 * s->engaged(),
|
||
< // 0.545 - 0.285 * s->engaged(),
|
||
< // 0.4 * (1.0 - dm_fade_state));
|
||
< // float delta_x = -scene.driver_pose_sins[1] * arc_l / 2;
|
||
< // float delta_y = -scene.driver_pose_sins[0] * arc_l / 2;
|
||
< // painter.setPen(QPen(arc_color, arc_t_default+arc_t_extend*fmin(1.0, scene.driver_pose_diff[1] * 5.0), Qt::SolidLine, Qt::RoundCap));
|
||
< // painter.drawArc(QRectF(std::fmin(x + delta_x, x), y - arc_l / 2, fabs(delta_x), arc_l), (scene.driver_pose_sins[1]>0 ? 90 : -90) * 16, 180 * 16);
|
||
< // painter.setPen(QPen(arc_color, arc_t_default+arc_t_extend*fmin(1.0, scene.driver_pose_diff[0] * 5.0), Qt::SolidLine, Qt::RoundCap));
|
||
< // painter.drawArc(QRectF(x - arc_l / 2, std::fmin(y + delta_y, y), arc_l, fabs(delta_y)), (scene.driver_pose_sins[0]>0 ? 0 : 180) * 16, 180 * 16);
|
||
---
|
||
> // base icon
|
||
> int offset = UI_BORDER_SIZE + btn_size / 2;
|
||
> int x = rightHandDM ? width() - offset : offset;
|
||
> x += onroadDistanceButton ? 250 : 0;
|
||
> offset += showAlwaysOnLateralStatusBar || showConditionalExperimentalStatusBar || roadNameUI ? 25 : 0;
|
||
> int y = height() - offset;
|
||
> float opacity = dmActive ? 0.65 : 0.2;
|
||
> drawIcon(painter, QPoint(x, y), dm_img, blackColor(70), opacity);
|
||
>
|
||
> // face
|
||
> QPointF face_kpts_draw[std::size(default_face_kpts_3d)];
|
||
> float kp;
|
||
> for (int i = 0; i < std::size(default_face_kpts_3d); ++i) {
|
||
> kp = (scene.face_kpts_draw[i].v[2] - 8) / 120 + 1.0;
|
||
> face_kpts_draw[i] = QPointF(scene.face_kpts_draw[i].v[0] * kp + x, scene.face_kpts_draw[i].v[1] * kp + y);
|
||
> }
|
||
>
|
||
> painter.setPen(QPen(QColor::fromRgbF(1.0, 1.0, 1.0, opacity), 5.2, Qt::SolidLine, Qt::RoundCap));
|
||
> painter.drawPolyline(face_kpts_draw, std::size(default_face_kpts_3d));
|
||
>
|
||
> // tracking arcs
|
||
> const int arc_l = 133;
|
||
> const float arc_t_default = 6.7;
|
||
> const float arc_t_extend = 12.0;
|
||
> QColor arc_color = QColor::fromRgbF(0.545 - 0.445 * s->engaged(),
|
||
> 0.545 + 0.4 * s->engaged(),
|
||
> 0.545 - 0.285 * s->engaged(),
|
||
> 0.4 * (1.0 - dm_fade_state));
|
||
> float delta_x = -scene.driver_pose_sins[1] * arc_l / 2;
|
||
> float delta_y = -scene.driver_pose_sins[0] * arc_l / 2;
|
||
> painter.setPen(QPen(arc_color, arc_t_default+arc_t_extend*fmin(1.0, scene.driver_pose_diff[1] * 5.0), Qt::SolidLine, Qt::RoundCap));
|
||
> painter.drawArc(QRectF(std::fmin(x + delta_x, x), y - arc_l / 2, fabs(delta_x), arc_l), (scene.driver_pose_sins[1]>0 ? 90 : -90) * 16, 180 * 16);
|
||
> painter.setPen(QPen(arc_color, arc_t_default+arc_t_extend*fmin(1.0, scene.driver_pose_diff[0] * 5.0), Qt::SolidLine, Qt::RoundCap));
|
||
> painter.drawArc(QRectF(x - arc_l / 2, std::fmin(y + delta_y, y), arc_l, fabs(delta_y)), (scene.driver_pose_sins[0]>0 ? 0 : 180) * 16, 180 * 16);
|
||
1041c1057
|
||
< // painter.restore();
|
||
---
|
||
> painter.restore();
|
||
1074,1079c1090,1094
|
||
< // CLEARPILOT disabling custom theme colors
|
||
< // if (currentHolidayTheme != 0) {
|
||
< // painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
< // } else if (customColors != 0) {
|
||
< // painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
< // } else {
|
||
---
|
||
> if (currentHolidayTheme != 0) {
|
||
> painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
> } else if (customColors != 0) {
|
||
> painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
> } else {
|
||
1081c1096
|
||
< // }
|
||
---
|
||
> }
|
||
1169c1184
|
||
< if (s->scene.longitudinal_control && sm.rcv_frame("modelV2") > s->scene.started_frame) {
|
||
---
|
||
> if (s->scene.longitudinal_control && sm.rcv_frame("modelV2") > s->scene.started_frame && !s->scene.hide_lead_marker) {
|
||
1218c1233
|
||
< // bottom_layout->addWidget(distance_btn);
|
||
---
|
||
> bottom_layout->addWidget(distance_btn);
|
||
1220,1221c1235,1236
|
||
< // QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||
< // bottom_layout->addItem(spacer);
|
||
---
|
||
> QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||
> bottom_layout->addItem(spacer);
|
||
1224c1239
|
||
< // bottom_layout->addWidget(compass_img);
|
||
---
|
||
> bottom_layout->addWidget(compass_img);
|
||
1285,1291c1300,1306
|
||
< // QTimer *record_timer = new QTimer(this);
|
||
< // connect(record_timer, &QTimer::timeout, this, [this]() {
|
||
< // if (recorder_btn) {
|
||
< // recorder_btn->update_screen();
|
||
< // }
|
||
< // });
|
||
< // record_timer->start(1000 / UI_FREQ);
|
||
---
|
||
> QTimer *record_timer = new QTimer(this);
|
||
> connect(record_timer, &QTimer::timeout, this, [this]() {
|
||
> if (recorder_btn) {
|
||
> recorder_btn->update_screen();
|
||
> }
|
||
> });
|
||
> record_timer->start(1000 / UI_FREQ);
|
||
1316c1331
|
||
< // experimentalMode = scene.experimental_mode;
|
||
---
|
||
> experimentalMode = scene.experimental_mode;
|
||
1387,1394c1402,1409
|
||
< // if (customSignals != 0 && (turnSignalLeft || turnSignalRight) && !bigMapOpen) {
|
||
< // if (!animationTimer->isActive()) {
|
||
< // animationTimer->start(totalFrames * 11); // 440 milliseconds per loop; syncs up perfectly with my 2019 Lexus ES 350 turn signal clicks
|
||
< // }
|
||
< // drawTurnSignals(p);
|
||
< // } else if (animationTimer->isActive()) {
|
||
< // animationTimer->stop();
|
||
< // }
|
||
---
|
||
> if (customSignals != 0 && (turnSignalLeft || turnSignalRight) && !bigMapOpen) {
|
||
> if (!animationTimer->isActive()) {
|
||
> animationTimer->start(totalFrames * 11); // 440 milliseconds per loop; syncs up perfectly with my 2019 Lexus ES 350 turn signal clicks
|
||
> }
|
||
> drawTurnSignals(p);
|
||
> } else if (animationTimer->isActive()) {
|
||
> animationTimer->stop();
|
||
> }
|
||
1404,1422c1419,1437
|
||
< // bool enableCompass = compass && !hideBottomIcons;
|
||
< // compass_img->setVisible(enableCompass);
|
||
< // if (enableCompass) {
|
||
< // compass_img->updateState();
|
||
< // bottom_layout->setAlignment(compass_img, (rightHandDM ? Qt::AlignLeft : Qt::AlignRight));
|
||
< // }
|
||
<
|
||
< // bool enableDistanceButton = onroadDistanceButton && !hideBottomIcons;
|
||
< // distance_btn->setVisible(enableDistanceButton);
|
||
< // if (enableDistanceButton) {
|
||
< // distance_btn->updateState();
|
||
< // bottom_layout->setAlignment(distance_btn, (rightHandDM ? Qt::AlignRight : Qt::AlignLeft));
|
||
< // }
|
||
<
|
||
< // bool enablePedalIcons = scene.pedals_on_ui && !bigMapOpen;
|
||
< // pedal_icons->setVisible(enablePedalIcons);
|
||
< // if (enablePedalIcons) {
|
||
< // pedal_icons->updateState();
|
||
< // }
|
||
---
|
||
> bool enableCompass = compass && !hideBottomIcons;
|
||
> compass_img->setVisible(enableCompass);
|
||
> if (enableCompass) {
|
||
> compass_img->updateState();
|
||
> bottom_layout->setAlignment(compass_img, (rightHandDM ? Qt::AlignLeft : Qt::AlignRight));
|
||
> }
|
||
>
|
||
> bool enableDistanceButton = onroadDistanceButton && !hideBottomIcons;
|
||
> distance_btn->setVisible(enableDistanceButton);
|
||
> if (enableDistanceButton) {
|
||
> distance_btn->updateState();
|
||
> bottom_layout->setAlignment(distance_btn, (rightHandDM ? Qt::AlignRight : Qt::AlignLeft));
|
||
> }
|
||
>
|
||
> bool enablePedalIcons = scene.pedals_on_ui && !bigMapOpen;
|
||
> pedal_icons->setVisible(enablePedalIcons);
|
||
> if (enablePedalIcons) {
|
||
> pedal_icons->updateState();
|
||
> }
|
||
1430,1431c1445
|
||
< // recorder_btn->setVisible(scene.screen_recorder && !mapOpen);
|
||
< recorder_btn->setVisible(false);
|
||
---
|
||
> recorder_btn->setVisible(scene.screen_recorder && !mapOpen);
|
||
1435c1449
|
||
< // setFixedSize(btn_size * 1.5, btn_size * 1.5);
|
||
---
|
||
> setFixedSize(btn_size * 1.5, btn_size * 1.5);
|
||
1437,1440c1451,1454
|
||
< // compassSize = btn_size;
|
||
< // circleOffset = compassSize / 2;
|
||
< // degreeLabelOffset = circleOffset + 25;
|
||
< // innerCompass = compassSize / 2;
|
||
---
|
||
> compassSize = btn_size;
|
||
> circleOffset = compassSize / 2;
|
||
> degreeLabelOffset = circleOffset + 25;
|
||
> innerCompass = compassSize / 2;
|
||
1442,1443c1456,1457
|
||
< // x = (btn_size * 1.5) / 2 + 20;
|
||
< // y = (btn_size * 1.5) / 2;
|
||
---
|
||
> x = (btn_size * 1.5) / 2 + 20;
|
||
> y = (btn_size * 1.5) / 2;
|
||
1445c1459
|
||
< // compassInnerImg = loadPixmap("../frogpilot/assets/other_images/compass_inner.png", QSize(compassSize / 1.75, compassSize / 1.75));
|
||
---
|
||
> compassInnerImg = loadPixmap("../frogpilot/assets/other_images/compass_inner.png", QSize(compassSize / 1.75, compassSize / 1.75));
|
||
1447,1449c1461,1463
|
||
< // staticElements = QPixmap(size());
|
||
< // staticElements.fill(Qt::transparent);
|
||
< // QPainter p(&staticElements);
|
||
---
|
||
> staticElements = QPixmap(size());
|
||
> staticElements.fill(Qt::transparent);
|
||
> QPainter p(&staticElements);
|
||
1451c1465
|
||
< // p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
---
|
||
> p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
1453,1454c1467,1468
|
||
< // QPen whitePen(Qt::white, 2);
|
||
< // p.setPen(whitePen);
|
||
---
|
||
> QPen whitePen(Qt::white, 2);
|
||
> p.setPen(whitePen);
|
||
1456,1458c1470,1472
|
||
< // p.setOpacity(1.0);
|
||
< // p.setBrush(QColor(0, 0, 0, 100));
|
||
< // p.drawEllipse(x - circleOffset, y - circleOffset, circleOffset * 2, circleOffset * 2);
|
||
---
|
||
> p.setOpacity(1.0);
|
||
> p.setBrush(QColor(0, 0, 0, 100));
|
||
> p.drawEllipse(x - circleOffset, y - circleOffset, circleOffset * 2, circleOffset * 2);
|
||
1460,1462c1474,1476
|
||
< // p.setBrush(Qt::NoBrush);
|
||
< // p.drawEllipse(x - (innerCompass + 5), y - (innerCompass + 5), (innerCompass + 5) * 2, (innerCompass + 5) * 2);
|
||
< // p.drawEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2);
|
||
---
|
||
> p.setBrush(Qt::NoBrush);
|
||
> p.drawEllipse(x - (innerCompass + 5), y - (innerCompass + 5), (innerCompass + 5) * 2, (innerCompass + 5) * 2);
|
||
> p.drawEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2);
|
||
1464,1467c1478,1481
|
||
< // QPainterPath outerCircle, innerCircle;
|
||
< // outerCircle.addEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2);
|
||
< // innerCircle.addEllipse(x - circleOffset, y - circleOffset, compassSize, compassSize);
|
||
< // p.fillPath(outerCircle.subtracted(innerCircle), Qt::black);
|
||
---
|
||
> QPainterPath outerCircle, innerCircle;
|
||
> outerCircle.addEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2);
|
||
> innerCircle.addEllipse(x - circleOffset, y - circleOffset, compassSize, compassSize);
|
||
> p.fillPath(outerCircle.subtracted(innerCircle), Qt::black);
|
||
1471,1474c1485,1488
|
||
< // if (bearingDeg != scene.bearing_deg) {
|
||
< // update();
|
||
< // bearingDeg = scene.bearing_deg;
|
||
< // }
|
||
---
|
||
> if (bearingDeg != scene.bearing_deg) {
|
||
> update();
|
||
> bearingDeg = scene.bearing_deg;
|
||
> }
|
||
1478,1479c1492,1493
|
||
< // QPainter p(this);
|
||
< // p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
---
|
||
> QPainter p(this);
|
||
> p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
1481,1537c1495,1551
|
||
< // bearingDeg = fmod(bearingDeg, 360);
|
||
< // if (bearingDeg < 0) {
|
||
< // bearingDeg += 360;
|
||
< // }
|
||
<
|
||
< // p.drawPixmap(0, 0, staticElements);
|
||
<
|
||
< // p.translate(x, y);
|
||
< // p.rotate(bearingDeg);
|
||
< // p.drawPixmap(-compassInnerImg.width() / 2, -compassInnerImg.height() / 2, compassInnerImg);
|
||
< // p.rotate(-bearingDeg);
|
||
< // p.translate(-x, -y);
|
||
<
|
||
< // QFont font = InterFont(10, QFont::Normal);
|
||
< // for (int i = 0; i < 360; i += 15) {
|
||
< // bool isBold = abs(i - bearingDeg) <= 7;
|
||
< // font.setWeight(isBold ? QFont::Bold : QFont::Normal);
|
||
< // p.setFont(font);
|
||
< // p.setPen(QPen(Qt::white, i % 90 == 0 ? 2 : 1));
|
||
<
|
||
< // p.save();
|
||
< // p.translate(x, y);
|
||
< // p.rotate(i);
|
||
< // p.drawLine(0, -(compassSize / 2 - (i % 90 == 0 ? 12 : 8)), 0, -(compassSize / 2));
|
||
< // p.translate(0, -(compassSize / 2 + 12));
|
||
< // p.rotate(-i);
|
||
< // p.drawText(QRect(-20, -10, 40, 20), Qt::AlignCenter, QString::number(i));
|
||
< // p.restore();
|
||
< // }
|
||
<
|
||
< // p.setFont(InterFont(20, QFont::Bold));
|
||
< // std::map<QString, std::tuple<QPair<float, float>, int, QColor>> directionInfo = {
|
||
< // {"N", {{292.5, 67.5}, Qt::AlignTop | Qt::AlignHCenter, Qt::white}},
|
||
< // {"E", {{22.5, 157.5}, Qt::AlignRight | Qt::AlignVCenter, Qt::white}},
|
||
< // {"S", {{112.5, 247.5}, Qt::AlignBottom | Qt::AlignHCenter, Qt::white}},
|
||
< // {"W", {{202.5, 337.5}, Qt::AlignLeft | Qt::AlignVCenter, Qt::white}}
|
||
< // };
|
||
< // int directionOffset = 20;
|
||
<
|
||
< // for (auto &item : directionInfo) {
|
||
< // QString direction = item.first;
|
||
< // auto &[range, alignmentFlag, color] = item.second;
|
||
< // auto &[minRange, maxRange] = range;
|
||
<
|
||
< // QRect textRect(x - innerCompass + directionOffset, y - innerCompass + directionOffset, innerCompass * 2 - 2 * directionOffset, innerCompass * 2 - 2 * directionOffset);
|
||
<
|
||
< // bool isInRange = false;
|
||
< // if (minRange > maxRange) {
|
||
< // isInRange = bearingDeg >= minRange || bearingDeg <= maxRange;
|
||
< // } else {
|
||
< // isInRange = bearingDeg >= minRange && bearingDeg <= maxRange;
|
||
< // }
|
||
<
|
||
< // p.setOpacity(isInRange ? 1.0 : 0.2);
|
||
< // p.setPen(QPen(color));
|
||
< // p.drawText(textRect, alignmentFlag, direction);
|
||
< // }
|
||
---
|
||
> bearingDeg = fmod(bearingDeg, 360);
|
||
> if (bearingDeg < 0) {
|
||
> bearingDeg += 360;
|
||
> }
|
||
>
|
||
> p.drawPixmap(0, 0, staticElements);
|
||
>
|
||
> p.translate(x, y);
|
||
> p.rotate(bearingDeg);
|
||
> p.drawPixmap(-compassInnerImg.width() / 2, -compassInnerImg.height() / 2, compassInnerImg);
|
||
> p.rotate(-bearingDeg);
|
||
> p.translate(-x, -y);
|
||
>
|
||
> QFont font = InterFont(10, QFont::Normal);
|
||
> for (int i = 0; i < 360; i += 15) {
|
||
> bool isBold = abs(i - bearingDeg) <= 7;
|
||
> font.setWeight(isBold ? QFont::Bold : QFont::Normal);
|
||
> p.setFont(font);
|
||
> p.setPen(QPen(Qt::white, i % 90 == 0 ? 2 : 1));
|
||
>
|
||
> p.save();
|
||
> p.translate(x, y);
|
||
> p.rotate(i);
|
||
> p.drawLine(0, -(compassSize / 2 - (i % 90 == 0 ? 12 : 8)), 0, -(compassSize / 2));
|
||
> p.translate(0, -(compassSize / 2 + 12));
|
||
> p.rotate(-i);
|
||
> p.drawText(QRect(-20, -10, 40, 20), Qt::AlignCenter, QString::number(i));
|
||
> p.restore();
|
||
> }
|
||
>
|
||
> p.setFont(InterFont(20, QFont::Bold));
|
||
> std::map<QString, std::tuple<QPair<float, float>, int, QColor>> directionInfo = {
|
||
> {"N", {{292.5, 67.5}, Qt::AlignTop | Qt::AlignHCenter, Qt::white}},
|
||
> {"E", {{22.5, 157.5}, Qt::AlignRight | Qt::AlignVCenter, Qt::white}},
|
||
> {"S", {{112.5, 247.5}, Qt::AlignBottom | Qt::AlignHCenter, Qt::white}},
|
||
> {"W", {{202.5, 337.5}, Qt::AlignLeft | Qt::AlignVCenter, Qt::white}}
|
||
> };
|
||
> int directionOffset = 20;
|
||
>
|
||
> for (auto &item : directionInfo) {
|
||
> QString direction = item.first;
|
||
> auto &[range, alignmentFlag, color] = item.second;
|
||
> auto &[minRange, maxRange] = range;
|
||
>
|
||
> QRect textRect(x - innerCompass + directionOffset, y - innerCompass + directionOffset, innerCompass * 2 - 2 * directionOffset, innerCompass * 2 - 2 * directionOffset);
|
||
>
|
||
> bool isInRange = false;
|
||
> if (minRange > maxRange) {
|
||
> isInRange = bearingDeg >= minRange || bearingDeg <= maxRange;
|
||
> } else {
|
||
> isInRange = bearingDeg >= minRange && bearingDeg <= maxRange;
|
||
> }
|
||
>
|
||
> p.setOpacity(isInRange ? 1.0 : 0.2);
|
||
> p.setPen(QPen(color));
|
||
> p.drawText(textRect, alignmentFlag, direction);
|
||
> }
|
||
1541c1555,1562
|
||
< // setFixedSize(btn_size * 1.5, btn_size * 1.5);
|
||
---
|
||
> setFixedSize(btn_size * 1.5, btn_size * 1.5);
|
||
>
|
||
> profile_data = {
|
||
> {QPixmap("../frogpilot/assets/other_images/traffic.png"), "Traffic"},
|
||
> {QPixmap("../frogpilot/assets/other_images/aggressive.png"), "Aggressive"},
|
||
> {QPixmap("../frogpilot/assets/other_images/standard.png"), "Standard"},
|
||
> {QPixmap("../frogpilot/assets/other_images/relaxed.png"), "Relaxed"}
|
||
> };
|
||
1543,1555c1564,1569
|
||
< // profile_data = {
|
||
< // {QPixmap("../frogpilot/assets/other_images/traffic.png"), "Traffic"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/aggressive.png"), "Aggressive"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/standard.png"), "Standard"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/relaxed.png"), "Relaxed"}
|
||
< // };
|
||
<
|
||
< // profile_data_kaofui = {
|
||
< // {QPixmap("../frogpilot/assets/other_images/traffic_kaofui.png"), "Traffic"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/aggressive_kaofui.png"), "Aggressive"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/standard_kaofui.png"), "Standard"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/relaxed_kaofui.png"), "Relaxed"}
|
||
< // };
|
||
---
|
||
> profile_data_kaofui = {
|
||
> {QPixmap("../frogpilot/assets/other_images/traffic_kaofui.png"), "Traffic"},
|
||
> {QPixmap("../frogpilot/assets/other_images/aggressive_kaofui.png"), "Aggressive"},
|
||
> {QPixmap("../frogpilot/assets/other_images/standard_kaofui.png"), "Standard"},
|
||
> {QPixmap("../frogpilot/assets/other_images/relaxed_kaofui.png"), "Relaxed"}
|
||
> };
|
||
1557c1571
|
||
< // transitionTimer.start();
|
||
---
|
||
> transitionTimer.start();
|
||
1559,1560c1573,1574
|
||
< // connect(this, &QPushButton::pressed, this, &DistanceButton::buttonPressed);
|
||
< // connect(this, &QPushButton::released, this, &DistanceButton::buttonReleased);
|
||
---
|
||
> connect(this, &QPushButton::pressed, this, &DistanceButton::buttonPressed);
|
||
> connect(this, &QPushButton::released, this, &DistanceButton::buttonReleased);
|
||
1564c1578
|
||
< // paramsMemory.putBool("OnroadDistanceButtonPressed", true);
|
||
---
|
||
> paramsMemory.putBool("OnroadDistanceButtonPressed", true);
|
||
1568c1582
|
||
< // paramsMemory.putBool("OnroadDistanceButtonPressed", false);
|
||
---
|
||
> paramsMemory.putBool("OnroadDistanceButtonPressed", false);
|
||
1572,1574c1586,1588
|
||
< // if (trafficModeActive != scene.traffic_mode_active || personality != static_cast<int>(scene.personality) && !trafficModeActive) {
|
||
< // transitionTimer.restart();
|
||
< // }
|
||
---
|
||
> if (trafficModeActive != scene.traffic_mode_active || personality != static_cast<int>(scene.personality) && !trafficModeActive) {
|
||
> transitionTimer.restart();
|
||
> }
|
||
1576c1590
|
||
< // personality = static_cast<int>(scene.personality);
|
||
---
|
||
> personality = static_cast<int>(scene.personality);
|
||
1581,1582c1595,1606
|
||
< // QPainter p(this);
|
||
< // p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
---
|
||
> QPainter p(this);
|
||
> p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
>
|
||
> constexpr qreal fadeDuration = 1000.0;
|
||
> constexpr qreal textDuration = 3000.0;
|
||
> int elapsed = transitionTimer.elapsed();
|
||
>
|
||
> qreal textOpacity = qBound(0.0, 1.0 - ((elapsed - textDuration) / fadeDuration), 1.0);
|
||
> qreal imageOpacity = qBound(0.0, (elapsed - textDuration) / fadeDuration, 1.0);
|
||
>
|
||
> int profile = trafficModeActive ? 0 : personality + 1;
|
||
> auto &[profileImage, profileText] = scene.use_kaofui_icons ? profile_data_kaofui[profile] : profile_data[profile];
|
||
1584,1604c1608,1618
|
||
< // constexpr qreal fadeDuration = 1000.0;
|
||
< // constexpr qreal textDuration = 3000.0;
|
||
< // int elapsed = transitionTimer.elapsed();
|
||
<
|
||
< // qreal textOpacity = qBound(0.0, 1.0 - ((elapsed - textDuration) / fadeDuration), 1.0);
|
||
< // qreal imageOpacity = qBound(0.0, (elapsed - textDuration) / fadeDuration, 1.0);
|
||
<
|
||
< // int profile = trafficModeActive ? 0 : personality + 1;
|
||
< // auto &[profileImage, profileText] = scene.use_kaofui_icons ? profile_data_kaofui[profile] : profile_data[profile];
|
||
<
|
||
< // if (textOpacity != 0.0) {
|
||
< // p.setOpacity(textOpacity);
|
||
< // p.setFont(InterFont(40, QFont::Bold));
|
||
< // p.setPen(Qt::white);
|
||
< // QRect textRect(-25, 0, width(), height() + 95);
|
||
< // p.drawText(textRect, Qt::AlignCenter, profileText);
|
||
< // }
|
||
<
|
||
< // if (imageOpacity != 0.0) {
|
||
< // drawIcon(p, QPoint((btn_size / 2) * 1.25, btn_size / 2 + 95), profileImage, Qt::transparent, imageOpacity);
|
||
< // }
|
||
---
|
||
> if (textOpacity != 0.0) {
|
||
> p.setOpacity(textOpacity);
|
||
> p.setFont(InterFont(40, QFont::Bold));
|
||
> p.setPen(Qt::white);
|
||
> QRect textRect(-25, 0, width(), height() + 95);
|
||
> p.drawText(textRect, Qt::AlignCenter, profileText);
|
||
> }
|
||
>
|
||
> if (imageOpacity != 0.0) {
|
||
> drawIcon(p, QPoint((btn_size / 2) * 1.25, btn_size / 2 + 95), profileImage, Qt::transparent, imageOpacity);
|
||
> }
|
||
1729c1743
|
||
< // acceleration = scene.acceleration;
|
||
---
|
||
> acceleration = scene.acceleration;
|
||
1731,1732c1745,1746
|
||
< // accelerating = acceleration > 0.25;
|
||
< // decelerating = acceleration < -0.25;
|
||
---
|
||
> accelerating = acceleration > 0.25;
|
||
> decelerating = acceleration < -0.25;
|
||
1734,1736c1748,1750
|
||
< // if (accelerating || decelerating) {
|
||
< // update();
|
||
< // }
|
||
---
|
||
> if (accelerating || decelerating) {
|
||
> update();
|
||
> }
|
||
1740,1741c1754,1755
|
||
< // QPainter p(this);
|
||
< // p.setRenderHint(QPainter::Antialiasing);
|
||
---
|
||
> QPainter p(this);
|
||
> p.setRenderHint(QPainter::Antialiasing);
|
||
1743,1744c1757,1758
|
||
< // int totalWidth = 2 * img_size;
|
||
< // int startX = (width() - totalWidth) / 2;
|
||
---
|
||
> int totalWidth = 2 * img_size;
|
||
> int startX = (width() - totalWidth) / 2;
|
||
1746,1747c1760,1761
|
||
< // int brakeX = startX + img_size / 2;
|
||
< // int gasX = startX + img_size;
|
||
---
|
||
> int brakeX = startX + img_size / 2;
|
||
> int gasX = startX + img_size;
|
||
1749,1750c1763,1764
|
||
< // float brakeOpacity = scene.standstill ? 1.0f : decelerating ? std::max(0.25f, std::abs(acceleration)) : 0.25f;
|
||
< // float gasOpacity = accelerating ? std::max(0.25f, acceleration) : 0.25f;
|
||
---
|
||
> float brakeOpacity = scene.standstill ? 1.0f : decelerating ? std::max(0.25f, std::abs(acceleration)) : 0.25f;
|
||
> float gasOpacity = accelerating ? std::max(0.25f, acceleration) : 0.25f;
|
||
1752,1753c1766,1767
|
||
< // p.setOpacity(brakeOpacity);
|
||
< // p.drawPixmap(brakeX, (height() - img_size) / 2, brake_pedal_img);
|
||
---
|
||
> p.setOpacity(brakeOpacity);
|
||
> p.drawPixmap(brakeX, (height() - img_size) / 2, brake_pedal_img);
|
||
1755,1756c1769,1770
|
||
< // p.setOpacity(gasOpacity);
|
||
< // p.drawPixmap(gasX, (height() - img_size) / 2, gas_pedal_img);
|
||
---
|
||
> p.setOpacity(gasOpacity);
|
||
> p.drawPixmap(gasX, (height() - img_size) / 2, gas_pedal_img);
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/onroad.h FrogPilot/openpilot/selfdrive/ui/qt/onroad.h
|
||
53,59c53,59
|
||
< // int bearingDeg;
|
||
< // int circleOffset;
|
||
< // int compassSize;
|
||
< // int degreeLabelOffset;
|
||
< // int innerCompass;
|
||
< // int x;
|
||
< // int y;
|
||
---
|
||
> int bearingDeg;
|
||
> int circleOffset;
|
||
> int compassSize;
|
||
> int degreeLabelOffset;
|
||
> int innerCompass;
|
||
> int x;
|
||
> int y;
|
||
83c83
|
||
< // int personality;
|
||
---
|
||
> int personality;
|
||
Only in clearpilot/openpilot/selfdrive/ui/qt: ready.cc
|
||
Only in clearpilot/openpilot/selfdrive/ui/qt: ready.h
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/sidebar.cc FrogPilot/openpilot/selfdrive/ui/qt/sidebar.cc
|
||
79,81c79,81
|
||
< {1, {"frog_theme", {QColor(255, 255, 255)}}},
|
||
< {2, {"tesla_theme", {QColor(255, 255, 255)}}},
|
||
< {3, {"stalin_theme", {QColor(255, 255, 255)}}}
|
||
---
|
||
> {1, {"frog_theme", {QColor(23, 134, 68)}}},
|
||
> {2, {"tesla_theme", {QColor(0, 72, 255)}}},
|
||
> {3, {"stalin_theme", {QColor(255, 0, 0)}}}
|
||
Only in clearpilot/openpilot/selfdrive/ui/qt: spinner
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/util.cc FrogPilot/openpilot/selfdrive/ui/qt/util.cc
|
||
29c29
|
||
< return QObject::tr("ClearPilot");
|
||
---
|
||
> return QObject::tr("FrogPilot");
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/widgets/drive_stats.cc FrogPilot/openpilot/selfdrive/ui/qt/widgets/drive_stats.cc
|
||
71,72c71,72
|
||
< labels.routes->setText(QString::number(paramsStorage.getInt("FrogPilotDrives")));
|
||
< labels.distance->setText(QString::number(int(paramsStorage.getFloat("FrogPilotKilometers") * (metric_ ? 1 : KM_TO_MILE))));
|
||
---
|
||
> labels.routes->setText(QString::number(params.getInt("FrogPilotDrives")));
|
||
> labels.distance->setText(QString::number(int(params.getFloat("FrogPilotKilometers") * (metric_ ? 1 : KM_TO_MILE))));
|
||
74c74
|
||
< labels.hours->setText(QString::number(int(paramsStorage.getFloat("FrogPilotMinutes") / 60)));
|
||
---
|
||
> labels.hours->setText(QString::number(int(params.getFloat("FrogPilotMinutes") / 60)));
|
||
diff -r clearpilot/openpilot/selfdrive/ui/qt/widgets/drive_stats.h FrogPilot/openpilot/selfdrive/ui/qt/widgets/drive_stats.h
|
||
21d20
|
||
< Params paramsStorage{"/persist/params"};
|
||
diff -r clearpilot/openpilot/selfdrive/ui/SConscript FrogPilot/openpilot/selfdrive/ui/SConscript
|
||
42d41
|
||
< # CLEARPILOT added qt/ready.cc
|
||
47,48c46
|
||
< "../frogpilot/screenrecorder/omx_encoder.cc", "../frogpilot/screenrecorder/screenrecorder.cc",
|
||
< "qt/ready.cc"]
|
||
---
|
||
> "../frogpilot/screenrecorder/omx_encoder.cc", "../frogpilot/screenrecorder/screenrecorder.cc"]
|
||
83,85d80
|
||
<
|
||
< # Clearpilot tools
|
||
< qt_env.Program("/data/openpilot/system/clearpilot/tools/qt_shell", ["/data/openpilot/system/clearpilot/tools/qt_shell.cc"], LIBS=qt_libs)
|
||
diff -r clearpilot/openpilot/selfdrive/ui/soundd.py FrogPilot/openpilot/selfdrive/ui/soundd.py
|
||
253,262c253,259
|
||
< # Clearpilot: Impl theme switcher
|
||
< # if current_holiday_theme != 0:
|
||
< # theme_name = holiday_theme_configuration.get(current_holiday_theme)
|
||
< # self.sound_directory = BASEDIR + ("/selfdrive/frogpilot/assets/holiday_themes/" + theme_name + "/sounds/")
|
||
< # self.goat_scream = False
|
||
< # else:
|
||
< # theme_name = theme_configuration.get(custom_sounds)
|
||
< # self.sound_directory = BASEDIR + ("/selfdrive/clearpilot/theme/" + theme_name + "/sounds/" if custom_sounds != 0 else "/selfdrive/assets/sounds/")
|
||
<
|
||
< self.sound_directory = BASEDIR + ("/selfdrive/clearpilot/theme/clearpilot/sounds/" if custom_sounds != 0 else "/selfdrive/assets/sounds/")
|
||
---
|
||
> if current_holiday_theme != 0:
|
||
> theme_name = holiday_theme_configuration.get(current_holiday_theme)
|
||
> self.sound_directory = BASEDIR + ("/selfdrive/frogpilot/assets/holiday_themes/" + theme_name + "/sounds/")
|
||
> self.goat_scream = False
|
||
> else:
|
||
> theme_name = theme_configuration.get(custom_sounds)
|
||
> self.sound_directory = BASEDIR + ("/selfdrive/frogpilot/assets/custom_themes/" + theme_name + "/sounds/" if custom_sounds != 0 else "/selfdrive/assets/sounds/")
|
||
diff -r clearpilot/openpilot/selfdrive/ui/spinner FrogPilot/openpilot/selfdrive/ui/spinner
|
||
3,4c3,4
|
||
< if [ -f /TICI ] && [ ! -f qt/spinner ]; then
|
||
< cp qt/spinner_larch64 qt/spinner
|
||
---
|
||
> if [ -f /TICI ] && [ ! -f _spinner ]; then
|
||
> cp qt/spinner_larch64 _spinner
|
||
7c7
|
||
< exec ./qt/spinner "$1"
|
||
---
|
||
> exec ./_spinner "$1"
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_ar.ts FrogPilot/openpilot/selfdrive/ui/translations/main_ar.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
734,737d364
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
940c567
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
991,994d617
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1041c664
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1059,1078d681
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1272,1295d874
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1317c896
|
||
< <translation type="vanished">يتم تحميل التحديثات فقط عندما تكون السيارة متوقفة.</translation>
|
||
---
|
||
> <translation>يتم تحميل التحديثات فقط عندما تكون السيارة متوقفة.</translation>
|
||
1371,1394d949
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">عرض</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1656,1663d1210
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_de.ts FrogPilot/openpilot/selfdrive/ui/translations/main_de.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
730,733d360
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
974,977d600
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1023c646
|
||
< <translation type="vanished">x</translation>
|
||
---
|
||
> <translation>x</translation>
|
||
1041,1060d663
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1255,1278d857
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1301c880
|
||
< <translation type="vanished">Updates werden nur heruntergeladen, wenn das Auto aus ist.</translation>
|
||
---
|
||
> <translation>Updates werden nur heruntergeladen, wenn das Auto aus ist.</translation>
|
||
1355,1378d933
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">ANSEHEN</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1641,1648d1195
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_fr.ts FrogPilot/openpilot/selfdrive/ui/translations/main_fr.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
730,733d360
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
936c563
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
975,978d601
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1025c648
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1043,1062d665
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1256,1279d858
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1285c864
|
||
< <translation type="vanished">Les MàJ sont téléchargées uniquement si la voiture est éteinte.</translation>
|
||
---
|
||
> <translation>Les MàJ sont téléchargées uniquement si la voiture est éteinte.</translation>
|
||
1355,1378d933
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">VOIR</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1640,1647d1194
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_ja.ts FrogPilot/openpilot/selfdrive/ui/translations/main_ja.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
934c561
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
970,973d596
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1019c642
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1037,1056d659
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1250,1273d852
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1279c858
|
||
< <translation type="vanished">車の電源がオフの間のみ、アップデートのダウンロードが行われます。</translation>
|
||
---
|
||
> <translation>車の電源がオフの間のみ、アップデートのダウンロードが行われます。</translation>
|
||
1349,1372d927
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">見る</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1633,1640d1187
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_ko.ts FrogPilot/openpilot/selfdrive/ui/translations/main_ko.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
971,974d597
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1021c644
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1039,1058d661
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1252,1275d854
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1281c860
|
||
< <translation type="vanished">업데이트는 차량 시동이 꺼졌을 때 다운로드됩니다.</translation>
|
||
---
|
||
> <translation>업데이트는 차량 시동이 꺼졌을 때 다운로드됩니다.</translation>
|
||
1351,1374d929
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">보기</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1636,1643d1190
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_pt-BR.ts FrogPilot/openpilot/selfdrive/ui/translations/main_pt-BR.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
730,733d360
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
936c563
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
975,978d601
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1025c648
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1043,1062d665
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1256,1279d858
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1285c864
|
||
< <translation type="vanished">Atualizações baixadas durante o motor desligado.</translation>
|
||
---
|
||
> <translation>Atualizações baixadas durante o motor desligado.</translation>
|
||
1355,1378d933
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">VER</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1640,1647d1194
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_th.ts FrogPilot/openpilot/selfdrive/ui/translations/main_th.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
971,974d597
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1021c644
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1039,1058d661
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1252,1275d854
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1297c876
|
||
< <translation type="vanished">ตัวอัปเดตจะดำเนินการดาวน์โหลดเมื่อรถดับเครื่องยนต์อยู่เท่านั้น</translation>
|
||
---
|
||
> <translation>ตัวอัปเดตจะดำเนินการดาวน์โหลดเมื่อรถดับเครื่องยนต์อยู่เท่านั้น</translation>
|
||
1351,1374d929
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">ดู</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1636,1643d1190
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_tr.ts FrogPilot/openpilot/selfdrive/ui/translations/main_tr.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
934c561
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
970,973d596
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1019c642
|
||
< <translation type="vanished">x</translation>
|
||
---
|
||
> <translation>x</translation>
|
||
1037,1056d659
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1250,1273d852
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1293a873,876
|
||
> <source>Updates are only downloaded while the car is off.</source>
|
||
> <translation type="unfinished"></translation>
|
||
> </message>
|
||
> <message>
|
||
1345,1368d927
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">BAK</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1629,1636d1187
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_zh-CHS.ts FrogPilot/openpilot/selfdrive/ui/translations/main_zh-CHS.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
971,974d597
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1021c644
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1039,1058d661
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1252,1275d854
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1281c860
|
||
< <translation type="vanished">车辆熄火时才能下载升级文件。</translation>
|
||
---
|
||
> <translation>车辆熄火时才能下载升级文件。</translation>
|
||
1351,1374d929
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">查看</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1636,1643d1190
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/translations/main_zh-CHT.ts FrogPilot/openpilot/selfdrive/ui/translations/main_zh-CHT.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
971,974d597
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1021c644
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1039,1058d661
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1252,1275d854
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1281c860
|
||
< <translation type="vanished">系統更新只會在熄火時下載。</translation>
|
||
---
|
||
> <translation>系統更新只會在熄火時下載。</translation>
|
||
1351,1374d929
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">觀看</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1636,1643d1190
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/openpilot/selfdrive/ui/ui.cc FrogPilot/openpilot/selfdrive/ui/ui.cc
|
||
361,363c361,362
|
||
< // CLEARPILOT
|
||
< scene.lane_line_width = /* params.getInt("LaneLinesWidth") */ 2 * (scene.is_metric ? 1.0f : INCH_TO_CM) / 200.0f;
|
||
< scene.path_edge_width = /* params.getInt("PathEdgeWidth"); */ 16;
|
||
---
|
||
> scene.lane_line_width = params.getInt("LaneLinesWidth") * (scene.is_metric ? 1.0f : INCH_TO_CM) / 200.0f;
|
||
> scene.path_edge_width = params.getInt("PathEdgeWidth");
|
||
394c393
|
||
< scene.screen_timeout = screen_management ? params.getInt("ScreenTimeout") : 120;
|
||
---
|
||
> scene.screen_timeout = screen_management ? params.getInt("ScreenTimeout") : 30;
|
||
diff -r clearpilot/openpilot/selfdrive/ui/ui.h FrogPilot/openpilot/selfdrive/ui/ui.h
|
||
21c21
|
||
< const int UI_BORDER_SIZE = 16; // clearpilot
|
||
---
|
||
> const int UI_BORDER_SIZE = 30;
|
||
29c29
|
||
< const float MAX_DRAW_DISTANCE = 100.0;
|
||
---
|
||
> const float MAX_DRAW_DISTANCE = 100.0;
|
||
109a110,120
|
||
> typedef enum UIStatus {
|
||
> STATUS_DISENGAGED,
|
||
> STATUS_OVERRIDE,
|
||
> STATUS_ENGAGED,
|
||
>
|
||
> // FrogPilot statuses
|
||
> STATUS_ALWAYS_ON_LATERAL_ACTIVE,
|
||
> STATUS_TRAFFIC_MODE_ACTIVE,
|
||
>
|
||
> } UIStatus;
|
||
>
|
||
119,128d129
|
||
<
|
||
< // Clearpilot redefined these.
|
||
< typedef enum UIStatus {
|
||
< STATUS_DISENGAGED,
|
||
< STATUS_OVERRIDE,
|
||
< STATUS_ENGAGED,
|
||
< STATUS_ALWAYS_ON_LATERAL_ACTIVE,
|
||
< STATUS_TRAFFIC_MODE_ACTIVE,
|
||
< STATUS_EXPERIMENTAL_ACTIVE,
|
||
< } UIStatus;
|
||
130d130
|
||
< // Clearpilot custom colors
|
||
133,137c133,138
|
||
< [STATUS_OVERRIDE] = QColor(64, 85, 245, 0xd1), // When you nudge the steering wheel while engaged
|
||
< [STATUS_ENGAGED] = QColor(64, 85, 245, 0xd1), // Orange
|
||
< [STATUS_ALWAYS_ON_LATERAL_ACTIVE] = QColor(162, 221, 235, 0xd1), // Gray
|
||
< [STATUS_TRAFFIC_MODE_ACTIVE] = QColor(0xc9, 0x22, 0x31, 0xd1), // ? unused?
|
||
< [STATUS_EXPERIMENTAL_ACTIVE] = QColor(201, 41, 204, 0xd1), // Magenta
|
||
---
|
||
> [STATUS_OVERRIDE] = QColor(0x91, 0x9b, 0x95, 0xf1),
|
||
> [STATUS_ENGAGED] = QColor(0x17, 0x86, 0x44, 0xf1),
|
||
>
|
||
> // FrogPilot colors
|
||
> [STATUS_ALWAYS_ON_LATERAL_ACTIVE] = QColor(0x0a, 0xba, 0xb5, 0xf1),
|
||
> [STATUS_TRAFFIC_MODE_ACTIVE] = QColor(0xc9, 0x22, 0x31, 0xf1),
|
||
142c143
|
||
< {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(4, 64, 11, 0xf1)}, // CLEARPILOT changed to a shade of dark blue
|
||
---
|
||
> {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)},
|
||
144c145
|
||
< {cereal::ControlsState::AlertStatus::FROGPILOT, QColor(47, 158, 238, 0xf1)}, // CLEARPILOT changed to light blue
|
||
---
|
||
> {cereal::ControlsState::AlertStatus::FROGPILOT, QColor(0x17, 0x86, 0x44, 0xf1)},
|
||
diff -r clearpilot/openpilot/selfdrive/updated/updated.py FrogPilot/openpilot/selfdrive/updated/updated.py
|
||
89,90d88
|
||
< # CLEARPILOT
|
||
< return b""
|
||
134,135c132
|
||
< # CLEARPILOT
|
||
< return
|
||
---
|
||
>
|
||
Only in clearpilot/openpilot/system: clearpilot
|
||
diff -r clearpilot/openpilot/system/hardware/base.h FrogPilot/openpilot/system/hardware/base.h
|
||
29d28
|
||
< static void soft_reboot() {}
|
||
diff -r clearpilot/openpilot/system/hardware/base.py FrogPilot/openpilot/system/hardware/base.py
|
||
33,36d32
|
||
< def soft_reboot(self):
|
||
< pass
|
||
<
|
||
< @abstractmethod
|
||
diff -r clearpilot/openpilot/system/hardware/pc/hardware.py FrogPilot/openpilot/system/hardware/pc/hardware.py
|
||
23,25d22
|
||
< def soft_reboot(self):
|
||
< print("SOFT REBOOT!")
|
||
<
|
||
diff -r clearpilot/openpilot/system/hardware/tici/hardware.h FrogPilot/openpilot/system/hardware/tici/hardware.h
|
||
53,69d52
|
||
< static void soft_reboot() {
|
||
< const std::vector<std::string> commands = {
|
||
< "rm -f /tmp/safe_staging_overlay.lock",
|
||
< "tmux new -s commatmp -d '/data/continue.sh'",
|
||
< "tmux kill-session -t comma",
|
||
< "tmux rename comma"
|
||
< };
|
||
< for (const auto& cmd : commands) {
|
||
< int result;
|
||
< do {
|
||
< result = std::system(cmd.c_str());
|
||
< } while (result != 0);
|
||
< if (result != 0) {
|
||
< reboot();
|
||
< }
|
||
< }
|
||
< }
|
||
diff -r clearpilot/openpilot/system/hardware/tici/hardware.py FrogPilot/openpilot/system/hardware/tici/hardware.py
|
||
135,144d134
|
||
< def soft_reboot(self):
|
||
< commands = [
|
||
< ['rm', '-f', '/tmp/safe_staging_overlay.lock'],
|
||
< ['tmux', 'new', '-s', 'commatmp', '-d', '/data/continue.sh'],
|
||
< ['tmux', 'kill-session', '-t', 'comma'],
|
||
< ['tmux', 'rename', 'comma'],
|
||
< ]
|
||
< for command in commands:
|
||
< subprocess.run(command, stderr=subprocess.DEVNULL, stdout=subprocess.DEVNULL)
|
||
<
|
||
diff -r clearpilot/openpilot/system/loggerd/uploader.py FrogPilot/openpilot/system/loggerd/uploader.py
|
||
17d16
|
||
< import openpilot.selfdrive.sentry as sentry
|
||
255,256c254
|
||
< openpilot_crashed = os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt'))
|
||
< if network_type == NetworkType.none or not at_home or openpilot_crashed:
|
||
---
|
||
> if network_type == NetworkType.none or not at_home:
|
||
diff -r clearpilot/openpilot/system/qcomgpsd/nmeaport.py FrogPilot/openpilot/system/qcomgpsd/nmeaport.py
|
||
96c96
|
||
< with open(device, "r") as nmeaport:
|
||
---
|
||
> with open(device) as nmeaport:
|
||
diff -r clearpilot/openpilot/system/qcomgpsd/qcomgpsd.py FrogPilot/openpilot/system/qcomgpsd/qcomgpsd.py
|
||
13c13
|
||
< from typing import NoReturn, Optional
|
||
---
|
||
> from typing import NoReturn
|
||
93c93
|
||
< def at_cmd(cmd: str) -> Optional[str]:
|
||
---
|
||
> def at_cmd(cmd: str) -> str | None:
|
||
208c208
|
||
< def wait_for_modem():
|
||
---
|
||
> def wait_for_modem(cmd="AT+QGPS?"):
|
||
211c211
|
||
< ret = subprocess.call("mmcli -m any --timeout 10 --command=\"AT+QGPS?\"", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True)
|
||
---
|
||
> ret = subprocess.call(f"mmcli -m any --timeout 10 --command=\"{cmd}\"", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True)
|
||
345c345
|
||
< dt_timestamp = (datetime.datetime(1980, 1, 6, 0, 0, 0, 0, datetime.timezone.utc) +
|
||
---
|
||
> dt_timestamp = (datetime.datetime(1980, 1, 6, 0, 0, 0, 0, datetime.UTC) +
|
||
355,356c355,356
|
||
< gps.flags = 1 if gps.verticalAccuracy != 500 else 0
|
||
< if gps.flags:
|
||
---
|
||
> gps.hasFix = gps.verticalAccuracy != 500
|
||
> if gps.hasFix:
|
||
Only in FrogPilot/openpilot/system/tests: __init__.py
|
||
Only in FrogPilot/openpilot/system/tests: test_logmessaged.py
|
||
diff -r clearpilot/openpilot/system/timed.py FrogPilot/openpilot/system/timed.py
|
||
59d58
|
||
< tf = TimezoneFinder()
|
||
Only in FrogPilot/openpilot/system: ugpsd.py
|
||
diff -r clearpilot/openpilot/system/version.py FrogPilot/openpilot/system/version.py
|
||
4c4,5
|
||
< from typing import List, Callable, TypeVar
|
||
---
|
||
> from typing import TypeVar
|
||
> from collections.abc import Callable
|
||
21c22
|
||
< def run_cmd(cmd: List[str]) -> str:
|
||
---
|
||
> def run_cmd(cmd: list[str]) -> str:
|
||
25c26
|
||
< def run_cmd_default(cmd: List[str], default: str = "") -> str:
|
||
---
|
||
> def run_cmd_default(cmd: list[str], default: str = "") -> str:
|
||
diff -r clearpilot/openpilot/system/webrtc/device/audio.py FrogPilot/openpilot/system/webrtc/device/audio.py
|
||
3d2
|
||
< from typing import Optional, List, Tuple
|
||
20c19
|
||
< def __init__(self, audio_format: int = pyaudio.paInt16, rate: int = 16000, channels: int = 1, packet_time: float = 0.020, device_index: Optional[int] = None):
|
||
---
|
||
> def __init__(self, audio_format: int = pyaudio.paInt16, rate: int = 16000, channels: int = 1, packet_time: float = 0.020, device_index: int = None):
|
||
52c51
|
||
< def __init__(self, audio_format: int = pyaudio.paInt16, rate: int = 48000, channels: int = 2, packet_time: float = 0.2, device_index: Optional[int] = None):
|
||
---
|
||
> def __init__(self, audio_format: int = pyaudio.paInt16, rate: int = 48000, channels: int = 2, packet_time: float = 0.2, device_index: int = None):
|
||
65c64
|
||
< self.tracks_and_tasks: List[Tuple[aiortc.MediaStreamTrack, Optional[asyncio.Task]]] = []
|
||
---
|
||
> self.tracks_and_tasks: list[tuple[aiortc.MediaStreamTrack, asyncio.Task | None]] = []
|
||
diff -r clearpilot/openpilot/system/webrtc/device/video.py FrogPilot/openpilot/system/webrtc/device/video.py
|
||
2d1
|
||
< from typing import Optional
|
||
43c42
|
||
< def codec_preference(self) -> Optional[str]:
|
||
---
|
||
> def codec_preference(self) -> str | None:
|
||
diff -r clearpilot/openpilot/system/webrtc/schema.py FrogPilot/openpilot/system/webrtc/schema.py
|
||
2c2
|
||
< from typing import Union, List, Dict, Any
|
||
---
|
||
> from typing import Any
|
||
5c5
|
||
< def generate_type(type_walker, schema_walker) -> Union[str, List[Any], Dict[str, Any]]:
|
||
---
|
||
> def generate_type(type_walker, schema_walker) -> str | list[Any] | dict[str, Any]:
|
||
18c18
|
||
< def generate_struct(schema: capnp.lib.capnp._StructSchema) -> Dict[str, Any]:
|
||
---
|
||
> def generate_struct(schema: capnp.lib.capnp._StructSchema) -> dict[str, Any]:
|
||
22c22
|
||
< def generate_field(field: capnp.lib.capnp._StructSchemaField) -> Union[str, List[Any], Dict[str, Any]]:
|
||
---
|
||
> def generate_field(field: capnp.lib.capnp._StructSchemaField) -> str | list[Any] | dict[str, Any]:
|
||
Only in FrogPilot/openpilot/system/webrtc/tests: test_stream_session.py
|
||
Only in FrogPilot/openpilot/system/webrtc/tests: test_webrtcd.py
|
||
diff -r clearpilot/openpilot/system/webrtc/webrtcd.py FrogPilot/openpilot/system/webrtc/webrtcd.py
|
||
9c9
|
||
< from typing import Any, List, Optional, Union, TYPE_CHECKING
|
||
---
|
||
> from typing import Any, TYPE_CHECKING
|
||
27c27
|
||
< self.channels: List['RTCDataChannel'] = []
|
||
---
|
||
> self.channels: list['RTCDataChannel'] = []
|
||
104a105,116
|
||
> class DynamicPubMaster(messaging.PubMaster):
|
||
> def __init__(self, *args, **kwargs):
|
||
> super().__init__(*args, **kwargs)
|
||
> self.lock = asyncio.Lock()
|
||
>
|
||
> async def add_services_if_needed(self, services):
|
||
> async with self.lock:
|
||
> for service in services:
|
||
> if service not in self.sock:
|
||
> self.sock[service] = messaging.pub_sock(service)
|
||
>
|
||
>
|
||
106c118,120
|
||
< def __init__(self, sdp: str, cameras: List[str], incoming_services: List[str], outgoing_services: List[str], debug_mode: bool = False):
|
||
---
|
||
> shared_pub_master = DynamicPubMaster([])
|
||
>
|
||
> def __init__(self, sdp: str, cameras: list[str], incoming_services: list[str], outgoing_services: list[str], debug_mode: bool = False):
|
||
131,133c145,153
|
||
< self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services))
|
||
< self.incoming_bridge = CerealIncomingMessageProxy(messaging.PubMaster(incoming_services))
|
||
< self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge)
|
||
---
|
||
> self.incoming_bridge: CerealIncomingMessageProxy | None = None
|
||
> self.incoming_bridge_services = incoming_services
|
||
> self.outgoing_bridge: CerealOutgoingMessageProxy | None = None
|
||
> self.outgoing_bridge_runner: CerealProxyRunner | None = None
|
||
> if len(incoming_services) > 0:
|
||
> self.incoming_bridge = CerealIncomingMessageProxy(self.shared_pub_master)
|
||
> if len(outgoing_services) > 0:
|
||
> self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services))
|
||
> self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge)
|
||
135,136c155,156
|
||
< self.audio_output: Optional[Union[AudioOutputSpeaker, MediaBlackhole]] = None
|
||
< self.run_task: Optional[asyncio.Task] = None
|
||
---
|
||
> self.audio_output: AudioOutputSpeaker | MediaBlackhole | None = None
|
||
> self.run_task: asyncio.Task | None = None
|
||
154a175
|
||
> assert self.incoming_bridge is not None
|
||
164,167c185,191
|
||
< self.stream.set_message_handler(self.message_handler)
|
||
< channel = self.stream.get_messaging_channel()
|
||
< self.outgoing_bridge_runner.proxy.add_channel(channel)
|
||
< self.outgoing_bridge_runner.start()
|
||
---
|
||
> if self.incoming_bridge is not None:
|
||
> await self.shared_pub_master.add_services_if_needed(self.incoming_bridge_services)
|
||
> self.stream.set_message_handler(self.message_handler)
|
||
> if self.outgoing_bridge_runner is not None:
|
||
> channel = self.stream.get_messaging_channel()
|
||
> self.outgoing_bridge_runner.proxy.add_channel(channel)
|
||
> self.outgoing_bridge_runner.start()
|
||
184c208,209
|
||
< self.outgoing_bridge_runner.stop()
|
||
---
|
||
> if self.outgoing_bridge is not None:
|
||
> self.outgoing_bridge_runner.stop()
|
||
192,194c217,219
|
||
< cameras: List[str]
|
||
< bridge_services_in: List[str] = field(default_factory=list)
|
||
< bridge_services_out: List[str] = field(default_factory=list)
|
||
---
|
||
> cameras: list[str]
|
||
> bridge_services_in: list[str] = field(default_factory=list)
|
||
> bridge_services_out: list[str] = field(default_factory=list)
|
||
Only in FrogPilot/openpilot/tools/bodyteleop: .gitignore
|
||
diff -r clearpilot/openpilot/tools/bodyteleop/web.py FrogPilot/openpilot/tools/bodyteleop/web.py
|
||
59c59
|
||
< stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
|
||
---
|
||
> capture_output=True, shell=True)
|
||
80c80
|
||
< with open(os.path.join(TELEOPDIR, "static", "index.html"), "r") as f:
|
||
---
|
||
> with open(os.path.join(TELEOPDIR, "static", "index.html")) as f:
|
||
Only in FrogPilot/openpilot/tools/cabana/assets: assets.qrc
|
||
Only in FrogPilot/openpilot/tools/cabana/assets: cabana-icon.png
|
||
Only in FrogPilot/openpilot/tools/cabana/assets: .gitignore
|
||
Only in FrogPilot/openpilot/tools/cabana: binaryview.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: binaryview.h
|
||
Only in FrogPilot/openpilot/tools/cabana: cabana.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: chart.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: chart.h
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: chartswidget.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: chartswidget.h
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: signalselector.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: signalselector.h
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: sparkline.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: sparkline.h
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: tiplabel.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/chart: tiplabel.h
|
||
Only in FrogPilot/openpilot/tools/cabana: commands.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: commands.h
|
||
Only in FrogPilot/openpilot/tools/cabana/dbc: dbc.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/dbc: dbcfile.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/dbc: dbcfile.h
|
||
Only in FrogPilot/openpilot/tools/cabana/dbc: dbc.h
|
||
Only in FrogPilot/openpilot/tools/cabana/dbc: dbcmanager.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/dbc: dbcmanager.h
|
||
Only in FrogPilot/openpilot/tools/cabana/dbc: generate_dbc_json.py
|
||
Only in FrogPilot/openpilot/tools/cabana: detailwidget.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: detailwidget.h
|
||
Only in FrogPilot/openpilot/tools/cabana: .gitignore
|
||
Only in FrogPilot/openpilot/tools/cabana: historylog.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: historylog.h
|
||
Only in FrogPilot/openpilot/tools/cabana: mainwin.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: mainwin.h
|
||
Only in FrogPilot/openpilot/tools/cabana: messageswidget.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: messageswidget.h
|
||
Only in FrogPilot/openpilot/tools/cabana: README.md
|
||
Only in FrogPilot/openpilot/tools/cabana: SConscript
|
||
Only in FrogPilot/openpilot/tools/cabana: settings.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: settings.h
|
||
Only in FrogPilot/openpilot/tools/cabana: signalview.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: signalview.h
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: abstractstream.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: abstractstream.h
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: devicestream.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: devicestream.h
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: livestream.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: livestream.h
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: pandastream.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: pandastream.h
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: replaystream.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: replaystream.h
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: socketcanstream.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/streams: socketcanstream.h
|
||
Only in FrogPilot/openpilot/tools/cabana: streamselector.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: streamselector.h
|
||
Only in FrogPilot/openpilot/tools/cabana/tests: test_cabana.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/tests: test_runner.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/tools: findsignal.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/tools: findsignal.h
|
||
Only in FrogPilot/openpilot/tools/cabana/tools: findsimilarbits.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/tools: findsimilarbits.h
|
||
Only in FrogPilot/openpilot/tools/cabana/utils: export.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/utils: export.h
|
||
Only in FrogPilot/openpilot/tools/cabana/utils: util.cc
|
||
Only in FrogPilot/openpilot/tools/cabana/utils: util.h
|
||
Only in FrogPilot/openpilot/tools/cabana: videowidget.cc
|
||
Only in FrogPilot/openpilot/tools/cabana: videowidget.h
|
||
Only in FrogPilot/openpilot/tools/camerastream: compressed_vipc.py
|
||
Only in FrogPilot/openpilot/tools/camerastream: README.md
|
||
Only in FrogPilot/openpilot/tools/car_porting: auto_fingerprint.py
|
||
Only in FrogPilot/openpilot/tools/car_porting/examples: ford_vin_fingerprint.ipynb
|
||
Only in FrogPilot/openpilot/tools/car_porting/examples: subaru_fuzzy_fingerprint.ipynb
|
||
Only in FrogPilot/openpilot/tools/car_porting/examples: subaru_long_accel.ipynb
|
||
Only in FrogPilot/openpilot/tools/car_porting/examples: subaru_steer_temp_fault.ipynb
|
||
Only in FrogPilot/openpilot/tools/car_porting: README.md
|
||
Only in FrogPilot/openpilot/tools/car_porting: test_car_model.py
|
||
Only in FrogPilot/openpilot/tools: CTF.md
|
||
Only in FrogPilot/openpilot/tools: install_python_dependencies.sh
|
||
Only in FrogPilot/openpilot/tools: install_ubuntu_dependencies.sh
|
||
Only in FrogPilot/openpilot/tools/latencylogger: latency_logger.py
|
||
Only in FrogPilot/openpilot/tools/latencylogger: README.md
|
||
diff -r clearpilot/openpilot/tools/lib/auth.py FrogPilot/openpilot/tools/lib/auth.py
|
||
29c29
|
||
< from typing import Any, Dict
|
||
---
|
||
> from typing import Any
|
||
39c39
|
||
< query_params: Dict[str, Any] = {}
|
||
---
|
||
> query_params: dict[str, Any] = {}
|
||
diff -r clearpilot/openpilot/tools/lib/azure_container.py FrogPilot/openpilot/tools/lib/azure_container.py
|
||
5c5
|
||
< from typing import IO, Union
|
||
---
|
||
> from typing import IO
|
||
60c60
|
||
< def upload_bytes(self, data: Union[bytes, IO], blob_name: str) -> str:
|
||
---
|
||
> def upload_bytes(self, data: bytes | IO, blob_name: str) -> str:
|
||
72c72
|
||
< def upload_file(self, path: Union[str, os.PathLike], blob_name: str) -> str:
|
||
---
|
||
> def upload_file(self, path: str | os.PathLike, blob_name: str) -> str:
|
||
diff -r clearpilot/openpilot/tools/lib/bootlog.py FrogPilot/openpilot/tools/lib/bootlog.py
|
||
3d2
|
||
< from typing import List, Optional
|
||
47c46
|
||
< def get_bootlog_from_id(bootlog_id: str) -> Optional[Bootlog]:
|
||
---
|
||
> def get_bootlog_from_id(bootlog_id: str) -> Bootlog | None:
|
||
55c54
|
||
< def get_bootlogs(dongle_id: str) -> List[Bootlog]:
|
||
---
|
||
> def get_bootlogs(dongle_id: str) -> list[Bootlog]:
|
||
diff -r clearpilot/openpilot/tools/lib/helpers.py FrogPilot/openpilot/tools/lib/helpers.py
|
||
12,14c12,14
|
||
< LOG_ID = r'(?P<log_id>(?:{}|{}))'.format(TIMESTAMP, LOG_ID_V2)
|
||
< ROUTE_NAME = r'(?P<route_name>{}[|_/]{})'.format(DONGLE_ID, LOG_ID)
|
||
< SEGMENT_NAME = r'{}(?:--|/)(?P<segment_num>[0-9]+)'.format(ROUTE_NAME)
|
||
---
|
||
> LOG_ID = fr'(?P<log_id>(?:{TIMESTAMP}|{LOG_ID_V2}))'
|
||
> ROUTE_NAME = fr'(?P<route_name>{DONGLE_ID}[|_/]{LOG_ID})'
|
||
> SEGMENT_NAME = fr'{ROUTE_NAME}(?:--|/)(?P<segment_num>[0-9]+)'
|
||
17,18c17,18
|
||
< SLICE = r'(?P<start>{})?:?(?P<end>{})?:?(?P<step>{})?'.format(INDEX, INDEX, INDEX)
|
||
< SEGMENT_RANGE = r'{}(?:(--|/)(?P<slice>({})))?(?:/(?P<selector>([qras])))?'.format(ROUTE_NAME, SLICE)
|
||
---
|
||
> SLICE = fr'(?P<start>{INDEX})?:?(?P<end>{INDEX})?:?(?P<step>{INDEX})?'
|
||
> SEGMENT_RANGE = fr'{ROUTE_NAME}(?:(--|/)(?P<slice>({SLICE})))?(?:/(?P<selector>([qras])))?'
|
||
22,23c22,23
|
||
< EXPLORER_FILE = r'^(?P<segment_name>{})--(?P<file_name>[a-z]+\.[a-z0-9]+)$'.format(SEGMENT_NAME)
|
||
< OP_SEGMENT_DIR = r'^(?P<segment_name>{})$'.format(SEGMENT_NAME)
|
||
---
|
||
> EXPLORER_FILE = fr'^(?P<segment_name>{SEGMENT_NAME})--(?P<file_name>[a-z]+\.[a-z0-9]+)$'
|
||
> OP_SEGMENT_DIR = fr'^(?P<segment_name>{SEGMENT_NAME})$'
|
||
diff -r clearpilot/openpilot/tools/lib/live_logreader.py FrogPilot/openpilot/tools/lib/live_logreader.py
|
||
2d1
|
||
< from typing import List
|
||
11c10
|
||
< def raw_live_logreader(services: List[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> RawLogIterable:
|
||
---
|
||
> def raw_live_logreader(services: list[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> RawLogIterable:
|
||
28c27
|
||
< def live_logreader(services: List[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> LogIterable:
|
||
---
|
||
> def live_logreader(services: list[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> LogIterable:
|
||
diff -r clearpilot/openpilot/tools/lib/logreader.py FrogPilot/openpilot/tools/lib/logreader.py
|
||
14c14
|
||
< from typing import Callable, Dict, Iterable, Iterator, List, Optional, Type
|
||
---
|
||
> from collections.abc import Callable, Iterable, Iterator
|
||
24c24
|
||
< LogMessage = Type[capnp._DynamicStructReader]
|
||
---
|
||
> LogMessage = type[capnp._DynamicStructReader]
|
||
79,80c79,80
|
||
< LogPath = Optional[str]
|
||
< LogPaths = List[LogPath]
|
||
---
|
||
> LogPath = str | None
|
||
> LogPaths = list[LogPath]
|
||
92c92
|
||
< if any(rlog is None or not valid_file(rlog) for rlog in rlog_paths):
|
||
---
|
||
> if any(rlog is None or not valid_file(rlog) for rlog in rlog_paths) and all(qlog is not None and valid_file(qlog) for qlog in qlog_paths):
|
||
173c173
|
||
< SOURCES: List[Source] = [internal_source, openpilotci_source, comma_api_source, comma_car_segments_source,]
|
||
---
|
||
> SOURCES: list[Source] = [internal_source, openpilotci_source, comma_api_source, comma_car_segments_source,]
|
||
174a175,183
|
||
>
|
||
> # for automatic fallback modes, auto_source needs to first check if rlogs exist for any source
|
||
> if mode in [ReadMode.AUTO, ReadMode.AUTO_INTERACTIVE]:
|
||
> for source in SOURCES:
|
||
> try:
|
||
> return check_source(source, sr, ReadMode.RLOG)
|
||
> except Exception:
|
||
> pass
|
||
>
|
||
215c224
|
||
< def _parse_identifiers(self, identifier: str | List[str]):
|
||
---
|
||
> def _parse_identifiers(self, identifier: str | list[str]):
|
||
237c246
|
||
< def __init__(self, identifier: str | List[str], default_mode: ReadMode = ReadMode.RLOG,
|
||
---
|
||
> def __init__(self, identifier: str | list[str], default_mode: ReadMode = ReadMode.RLOG,
|
||
246c255
|
||
< self.__lrs: Dict[int, _LogFileReader] = {}
|
||
---
|
||
> self.__lrs: dict[int, _LogFileReader] = {}
|
||
251c260
|
||
< self.__lrs[i] = _LogFileReader(self.logreader_identifiers[i])
|
||
---
|
||
> self.__lrs[i] = _LogFileReader(self.logreader_identifiers[i], sort_by_time=self.sort_by_time, only_union_types=self.only_union_types)
|
||
diff -r clearpilot/openpilot/tools/lib/README.md FrogPilot/openpilot/tools/lib/README.md
|
||
37c37
|
||
< We also support a new format called a "segment range", where you can specify which segments from a route to load.
|
||
---
|
||
> We also support a new format called a "segment range":
|
||
39c39,44
|
||
< ```python
|
||
---
|
||
> ```
|
||
> 344c5c15b34f2d8a / 2024-01-03--09-37-12 / 2:6 / q
|
||
> [ dongle id ] [ timestamp ] [ selector ] [ query type]
|
||
> ```
|
||
>
|
||
> you can specify which segments from a route to load
|
||
40a46
|
||
> ```python
|
||
diff -r clearpilot/openpilot/tools/lib/route.py FrogPilot/openpilot/tools/lib/route.py
|
||
7c7
|
||
< from typing import Optional, cast
|
||
---
|
||
> from typing import cast
|
||
234c234
|
||
< def data_dir(self) -> Optional[str]: return self._data_dir
|
||
---
|
||
> def data_dir(self) -> str | None: return self._data_dir
|
||
266a267,270
|
||
> def log_id(self) -> str:
|
||
> return self.m.group("log_id")
|
||
>
|
||
> @property
|
||
294c298
|
||
< return f"{self.dongle_id}/{self.timestamp}" + (f"/{self.slice}" if self.slice else "") + (f"/{self.selector}" if self.selector else "")
|
||
---
|
||
> return f"{self.dongle_id}/{self.log_id}" + (f"/{self.slice}" if self.slice else "") + (f"/{self.selector}" if self.selector else "")
|
||
diff -r clearpilot/openpilot/tools/lib/tests/test_caching.py FrogPilot/openpilot/tools/lib/tests/test_caching.py
|
||
4a5,6
|
||
> import shutil
|
||
> import socket
|
||
8,9c10,11
|
||
< from openpilot.selfdrive.athena.tests.helpers import with_http_server
|
||
<
|
||
---
|
||
> from openpilot.selfdrive.test.helpers import with_http_server
|
||
> from openpilot.system.hardware.hw import Paths
|
||
18c20
|
||
< self.send_response(200, b'1234')
|
||
---
|
||
> self.send_response(206 if "Range" in self.headers else 200, b'1234')
|
||
35a38,65
|
||
>
|
||
> @with_caching_server
|
||
> def test_pipeline_defaults(self, host):
|
||
> # TODO: parameterize the defaults so we don't rely on hard-coded values in xx
|
||
>
|
||
> self.assertEqual(URLFile.pool_manager().pools._maxsize, 10) # PoolManager num_pools param
|
||
> pool_manager_defaults = {
|
||
> "maxsize": 100,
|
||
> "socket_options": [(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),],
|
||
> }
|
||
> for k, v in pool_manager_defaults.items():
|
||
> self.assertEqual(URLFile.pool_manager().connection_pool_kw.get(k), v)
|
||
>
|
||
> retry_defaults = {
|
||
> "total": 5,
|
||
> "backoff_factor": 0.5,
|
||
> "status_forcelist": [409, 429, 503, 504],
|
||
> }
|
||
> for k, v in retry_defaults.items():
|
||
> self.assertEqual(getattr(URLFile.pool_manager().connection_pool_kw["retries"], k), v)
|
||
>
|
||
> # ensure caching off by default and cache dir doesn't get created
|
||
> os.environ.pop("FILEREADER_CACHE", None)
|
||
> if os.path.exists(Paths.download_cache_root()):
|
||
> shutil.rmtree(Paths.download_cache_root())
|
||
> URLFile(f"{host}/test.txt").get_length()
|
||
> URLFile(f"{host}/test.txt").read()
|
||
> self.assertEqual(os.path.exists(Paths.download_cache_root()), False)
|
||
diff -r clearpilot/openpilot/tools/lib/tests/test_comma_car_segments.py FrogPilot/openpilot/tools/lib/tests/test_comma_car_segments.py
|
||
1,2c1
|
||
<
|
||
<
|
||
---
|
||
> import pytest
|
||
10a10
|
||
> @pytest.mark.skip(reason="huggingface is flaky, run this test manually to check for issues")
|
||
diff -r clearpilot/openpilot/tools/lib/tests/test_logreader.py FrogPilot/openpilot/tools/lib/tests/test_logreader.py
|
||
1a2
|
||
> import capnp
|
||
13a15
|
||
> from cereal import log as capnp_log
|
||
217a220,256
|
||
>
|
||
> @pytest.mark.slow
|
||
> def test_sort_by_time(self):
|
||
> msgs = list(LogReader(f"{TEST_ROUTE}/0/q"))
|
||
> self.assertNotEqual(msgs, sorted(msgs, key=lambda m: m.logMonoTime))
|
||
>
|
||
> msgs = list(LogReader(f"{TEST_ROUTE}/0/q", sort_by_time=True))
|
||
> self.assertEqual(msgs, sorted(msgs, key=lambda m: m.logMonoTime))
|
||
>
|
||
> def test_only_union_types(self):
|
||
> with tempfile.NamedTemporaryFile() as qlog:
|
||
> # write valid Event messages
|
||
> num_msgs = 100
|
||
> with open(qlog.name, "wb") as f:
|
||
> f.write(b"".join(capnp_log.Event.new_message().to_bytes() for _ in range(num_msgs)))
|
||
>
|
||
> msgs = list(LogReader(qlog.name))
|
||
> self.assertEqual(len(msgs), num_msgs)
|
||
> [m.which() for m in msgs]
|
||
>
|
||
> # append non-union Event message
|
||
> event_msg = capnp_log.Event.new_message()
|
||
> non_union_bytes = bytearray(event_msg.to_bytes())
|
||
> non_union_bytes[event_msg.total_size.word_count * 8] = 0xff # set discriminant value out of range using Event word offset
|
||
> with open(qlog.name, "ab") as f:
|
||
> f.write(non_union_bytes)
|
||
>
|
||
> # ensure new message is added, but is not a union type
|
||
> msgs = list(LogReader(qlog.name))
|
||
> self.assertEqual(len(msgs), num_msgs + 1)
|
||
> with self.assertRaises(capnp.KjException):
|
||
> [m.which() for m in msgs]
|
||
>
|
||
> # should not be added when only_union_types=True
|
||
> msgs = list(LogReader(qlog.name, only_union_types=True))
|
||
> self.assertEqual(len(msgs), num_msgs)
|
||
> [m.which() for m in msgs]
|
||
diff -r clearpilot/openpilot/tools/lib/vidindex.py FrogPilot/openpilot/tools/lib/vidindex.py
|
||
6d5
|
||
< from typing import Tuple
|
||
123c122
|
||
< def get_ue(dat: bytes, start_idx: int, skip_bits: int) -> Tuple[int, int]:
|
||
---
|
||
> def get_ue(dat: bytes, start_idx: int, skip_bits: int) -> tuple[int, int]:
|
||
187c186
|
||
< def get_hevc_slice_type(dat: bytes, nal_unit_start: int, nal_unit_type: HevcNalUnitType) -> Tuple[int, bool]:
|
||
---
|
||
> def get_hevc_slice_type(dat: bytes, nal_unit_start: int, nal_unit_type: HevcNalUnitType) -> tuple[int, bool]:
|
||
262c261
|
||
< def hevc_index(hevc_file_name: str, allow_corrupt: bool=False) -> Tuple[list, int, bytes]:
|
||
---
|
||
> def hevc_index(hevc_file_name: str, allow_corrupt: bool=False) -> tuple[list, int, bytes]:
|
||
Only in FrogPilot/openpilot/tools: mac_setup.sh
|
||
Only in FrogPilot/openpilot/tools/plotjuggler: .gitignore
|
||
Only in FrogPilot/openpilot/tools/plotjuggler: juggle.py
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: camera-timings.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: CAN-bus-debug.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: can-states.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: controls_mismatch_debug.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: demo.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: gps_vs_llk.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: longitudinal.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: max-torque-debug.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: system_lag_debug.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: thermal_debug.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: torque-controller.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: tuning.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler/layouts: ublox-debug.xml
|
||
Only in FrogPilot/openpilot/tools/plotjuggler: README.md
|
||
Only in FrogPilot/openpilot/tools/plotjuggler: test_plotjuggler.py
|
||
Only in FrogPilot/openpilot/tools/profiling/clpeak: build.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/clpeak: .gitignore
|
||
Only in FrogPilot/openpilot/tools/profiling/clpeak: no_print.patch
|
||
Only in FrogPilot/openpilot/tools/profiling/clpeak: run_continuously.patch
|
||
Only in FrogPilot/openpilot/tools/profiling: ftrace.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/palanteer: .gitignore
|
||
Only in FrogPilot/openpilot/tools/profiling/palanteer: setup.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/perfetto: build.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/perfetto: copy.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/perfetto: .gitignore
|
||
Only in FrogPilot/openpilot/tools/profiling/perfetto: record.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/perfetto: server.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/perfetto: traces.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/py-spy: profile.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/snapdragon: .gitignore
|
||
Only in FrogPilot/openpilot/tools/profiling/snapdragon: README.md
|
||
Only in FrogPilot/openpilot/tools/profiling/snapdragon: setup-agnos.sh
|
||
Only in FrogPilot/openpilot/tools/profiling/snapdragon: setup-profiler.sh
|
||
Only in FrogPilot/openpilot/tools/profiling: watch-irqs.sh
|
||
Only in FrogPilot/openpilot/tools: README.md
|
||
Only in FrogPilot/openpilot/tools/replay: camera.cc
|
||
Only in FrogPilot/openpilot/tools/replay: camera.h
|
||
Only in FrogPilot/openpilot/tools/replay: can_replay.py
|
||
Only in FrogPilot/openpilot/tools/replay: consoleui.cc
|
||
Only in FrogPilot/openpilot/tools/replay: consoleui.h
|
||
Only in FrogPilot/openpilot/tools/replay: filereader.cc
|
||
Only in FrogPilot/openpilot/tools/replay: filereader.h
|
||
Only in FrogPilot/openpilot/tools/replay: framereader.cc
|
||
Only in FrogPilot/openpilot/tools/replay: framereader.h
|
||
Only in FrogPilot/openpilot/tools/replay: .gitignore
|
||
Only in FrogPilot/openpilot/tools/replay: __init__.py
|
||
Only in FrogPilot/openpilot/tools/replay/lib: __init__.py
|
||
Only in FrogPilot/openpilot/tools/replay/lib: ui_helpers.py
|
||
Only in FrogPilot/openpilot/tools/replay: logreader.cc
|
||
Only in FrogPilot/openpilot/tools/replay: logreader.h
|
||
Only in FrogPilot/openpilot/tools/replay: main.cc
|
||
Only in FrogPilot/openpilot/tools/replay: README.md
|
||
Only in FrogPilot/openpilot/tools/replay: replay.cc
|
||
Only in FrogPilot/openpilot/tools/replay: replay.h
|
||
Only in FrogPilot/openpilot/tools/replay: route.cc
|
||
Only in FrogPilot/openpilot/tools/replay: route.h
|
||
Only in FrogPilot/openpilot/tools/replay: SConscript
|
||
Only in FrogPilot/openpilot/tools/replay/tests: test_replay.cc
|
||
Only in FrogPilot/openpilot/tools/replay/tests: test_runner.cc
|
||
Only in FrogPilot/openpilot/tools/replay: ui.py
|
||
Only in FrogPilot/openpilot/tools/replay: unlog_ci_segment.py
|
||
Only in FrogPilot/openpilot/tools/replay: util.cc
|
||
Only in FrogPilot/openpilot/tools/replay: util.h
|
||
Only in FrogPilot/openpilot/tools/scripts: fetch_image_from_route.py
|
||
Only in FrogPilot/openpilot/tools/scripts: save_ubloxraw_stream.py
|
||
Only in FrogPilot/openpilot/tools/scripts: setup_ssh_keys.py
|
||
Only in FrogPilot/openpilot/tools/serial: connect.sh
|
||
Only in FrogPilot/openpilot/tools/serial: README.md
|
||
Only in FrogPilot/openpilot/tools/sim/bridge: common.py
|
||
Only in FrogPilot/openpilot/tools/sim/bridge: __init__.py
|
||
Only in FrogPilot/openpilot/tools/sim/bridge/metadrive: metadrive_bridge.py
|
||
Only in FrogPilot/openpilot/tools/sim/bridge/metadrive: metadrive_common.py
|
||
Only in FrogPilot/openpilot/tools/sim/bridge/metadrive: metadrive_process.py
|
||
Only in FrogPilot/openpilot/tools/sim/bridge/metadrive: metadrive_world.py
|
||
Only in FrogPilot/openpilot/tools/sim: build_container.sh
|
||
Only in FrogPilot/openpilot/tools/sim: Dockerfile.sim
|
||
Only in FrogPilot/openpilot/tools/sim: Dockerfile.sim_nvidia
|
||
Only in FrogPilot/openpilot/tools/sim: __init__.py
|
||
Only in FrogPilot/openpilot/tools/sim: launch_openpilot.sh
|
||
Only in FrogPilot/openpilot/tools/sim/lib: camerad.py
|
||
Only in FrogPilot/openpilot/tools/sim/lib: common.py
|
||
Only in FrogPilot/openpilot/tools/sim/lib: __init__.py
|
||
Only in FrogPilot/openpilot/tools/sim/lib: keyboard_ctrl.py
|
||
Only in FrogPilot/openpilot/tools/sim/lib: manual_ctrl.py
|
||
Only in FrogPilot/openpilot/tools/sim/lib: simulated_car.py
|
||
Only in FrogPilot/openpilot/tools/sim/lib: simulated_sensors.py
|
||
Only in FrogPilot/openpilot/tools/sim: README.md
|
||
Only in FrogPilot/openpilot/tools/sim: rgb_to_nv12.cl
|
||
Only in FrogPilot/openpilot/tools/sim: run_bridge.py
|
||
Only in FrogPilot/openpilot/tools/sim/scenarios/metadrive: stay_in_lane.py
|
||
Only in FrogPilot/openpilot/tools/sim: start_openpilot_docker.sh
|
||
Only in FrogPilot/openpilot/tools/sim/tests: __init__.py
|
||
Only in FrogPilot/openpilot/tools/sim/tests: test_metadrive_bridge.py
|
||
Only in FrogPilot/openpilot/tools/sim/tests: test_sim_bridge.py
|
||
Only in FrogPilot/openpilot/tools/ssh: id_rsa
|
||
Only in FrogPilot/openpilot/tools/ssh: README.md
|
||
Only in FrogPilot/openpilot/tools/tuning: measure_steering_accuracy.py
|
||
Only in FrogPilot/openpilot/tools: ubuntu_setup.sh
|
||
Only in FrogPilot/openpilot/tools/webcam: camerad.py
|
||
Only in FrogPilot/openpilot/tools/webcam: camera.py
|
||
Only in FrogPilot/openpilot/tools/webcam: Dockerfile
|
||
Only in FrogPilot/openpilot/tools/webcam: README.md
|
||
Only in FrogPilot/openpilot/tools/webcam: start_camerad.sh
|
||
Only in FrogPilot/openpilot/tools/zookeeper: check_consumption.py
|
||
Only in FrogPilot/openpilot/tools/zookeeper: disable.py
|
||
Only in FrogPilot/openpilot/tools/zookeeper: enable_and_wait.py
|
||
Only in FrogPilot/openpilot/tools/zookeeper: ignition.py
|
||
Only in FrogPilot/openpilot/tools/zookeeper: __init__.py
|
||
Only in FrogPilot/openpilot/tools/zookeeper: power_monitor.py
|
||
Only in FrogPilot/openpilot/tools/zookeeper: test_zookeeper.py
|
||
Only in clearpilot/openpilot: update.sh
|
||
diff -r clearpilot/panda/board/safety/safety_chrysler.h FrogPilot/panda/board/safety/safety_chrysler.h
|
||
237,246d236
|
||
< // SG_ ACC_Cancel : 0|1@1+ (1,0) [0|0] "" XXX
|
||
< // SG_ ACC_Distance_Dec : 1|1@1+ (1,0) [0|0] "" XXX
|
||
< // SG_ ACC_Accel : 2|1@1+ (1,0) [0|0] "" XXX
|
||
< // SG_ ACC_Decel : 3|1@1+ (1,0) [0|0] "" XXX
|
||
< // SG_ ACC_Resume : 4|1@0+ (1,0) [0|1] "" XXX
|
||
< // SG_ Cruise_OnOff : 6|1@1+ (1,0) [0|0] "" XXX
|
||
< // SG_ ACC_OnOff : 7|1@1+ (1,0) [0|0] "" XXX
|
||
< // SG_ ACC_Distance_Inc : 8|1@1+ (1,0) [0|0] "" XXX
|
||
< // SG_ COUNTER : 15|4@0+ (1,0) [0|15] "" XXX
|
||
< // SG_ CHECKSUM : 23|8@0+ (1,0) [0|255] "" XXX
|
||
diff -r clearpilot/panda/board/safety/safety_gm.h FrogPilot/panda/board/safety/safety_gm.h
|
||
91c91
|
||
< GM_BTN_SET = 3,
|
||
---
|
||
> GM_BTN_SET = 3,
|
||
98d97
|
||
< bool gm_cc_long = false;
|
||
100a100
|
||
> bool gm_cc_long = false;
|
||
126a127
|
||
>
|
||
156,160c157,158
|
||
< brake_pressed = GET_BIT(to_push, 40U) != 0U;
|
||
< }
|
||
<
|
||
< if (addr == 0xC9) {
|
||
< acc_main_on = GET_BIT(to_push, 29U) != 0U;
|
||
---
|
||
> acc_main_on = GET_BIT(to_push, 29U);
|
||
> brake_pressed = GET_BIT(to_push, 40U);
|
||
193a192
|
||
> // gm_pcm_cruise = false;
|
||
316c315
|
||
< } else if ((gm_hw == GM_CAM) || (gm_hw == GM_SDGM)) {
|
||
---
|
||
> } else if (gm_hw == GM_CAM) {
|
||
diff -r clearpilot/panda/board/safety/safety_hyundai_canfd.h FrogPilot/panda/board/safety/safety_hyundai_canfd.h
|
||
47d46
|
||
<
|
||
247d245
|
||
< // CLEARPILOT - Allow buttons 1 (accel), 2 (decel), 4 (pause/resume)
|
||
252,256d249
|
||
< bool is_set_decel = (button == 2);
|
||
<
|
||
< bool allowed = (is_cancel && cruise_engaged_prev)
|
||
< || (is_resume && controls_allowed)
|
||
< || (is_resume && is_set_decel);
|
||
257a251
|
||
> bool allowed = (is_cancel && cruise_engaged_prev) || (is_resume && controls_allowed);
|
||
262,265d255
|
||
<
|
||
< // CLEARPILOT - Allow DRIVE_MODE2
|
||
< // if (addr == 1144) {
|
||
< // }
|
||
diff -r clearpilot/panda/board/safety/safety_hyundai.h FrogPilot/panda/board/safety/safety_hyundai.h
|
||
291,295d290
|
||
<
|
||
< // CLEARPILOT - Allow buttons 1 (accel), 2 (decel), 4 (pause/resume)
|
||
< // if (!(button == 1 || button == 2 || button == 3)) {
|
||
< // tx = false;
|
||
< // }
|
||
Only in clearpilot/: pull.sh
|
||
Only in FrogPilot/rednose_repo: Dockerfile
|
||
Only in FrogPilot/rednose_repo: .dockerignore
|
||
Only in FrogPilot/rednose_repo: .editorconfig
|
||
Only in FrogPilot/rednose_repo/examples: __init__.py
|
||
Only in FrogPilot/rednose_repo/examples: kinematic_kf.png
|
||
Only in FrogPilot/rednose_repo/examples: kinematic_kf.py
|
||
Only in FrogPilot/rednose_repo/examples: live_kf.py
|
||
Only in FrogPilot/rednose_repo/examples: SConscript
|
||
Only in FrogPilot/rednose_repo/examples: test_compare.py
|
||
Only in FrogPilot/rednose_repo/examples: test_kinematic_kf.py
|
||
Only in FrogPilot/rednose_repo/.github/workflows: tests.yml
|
||
Only in FrogPilot/rednose_repo: .gitignore
|
||
Only in FrogPilot/rednose_repo: LICENSE
|
||
Only in FrogPilot/rednose_repo: .pre-commit-config.yaml
|
||
Only in FrogPilot/rednose_repo: pyproject.toml
|
||
Only in FrogPilot/rednose_repo: README.md
|
||
Only in FrogPilot/rednose_repo/rednose: .gitignore
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: chi2_lookup.py
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: chi2_lookup_table.npy
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: ekf.h
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: ekf_load.cc
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: ekf_load.h
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: ekf_sym.cc
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: ekf_sym.h
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: ekf_sym.py
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: ekf_sym_pyx.pyx
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: __init__.py
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: kalmanfilter.py
|
||
Only in FrogPilot/rednose_repo/rednose/helpers: sympy_helpers.py
|
||
Only in FrogPilot/rednose_repo/rednose: __init__.py
|
||
Only in FrogPilot/rednose_repo/rednose/logger: logger.h
|
||
Only in FrogPilot/rednose_repo/rednose: SConscript
|
||
Only in FrogPilot/rednose_repo/rednose/templates: compute_pos.c
|
||
Only in FrogPilot/rednose_repo/rednose/templates: ekf_c.c
|
||
Only in FrogPilot/rednose_repo/rednose/templates: feature_handler.c
|
||
Only in FrogPilot/rednose_repo: requirements.txt
|
||
Only in FrogPilot/rednose_repo: SConstruct
|
||
Only in FrogPilot/rednose_repo: setup.py
|
||
Only in FrogPilot/rednose_repo/site_scons/site_tools: cython.py
|
||
Only in FrogPilot/release: build_devel.sh
|
||
Only in FrogPilot/release: build_release.sh
|
||
Only in FrogPilot/release: check-dirty.sh
|
||
Only in FrogPilot/release: check-submodules.sh
|
||
Only in FrogPilot/release: files_pc
|
||
Only in FrogPilot/release: files_tici
|
||
Only in FrogPilot/release: identity.sh
|
||
Only in FrogPilot/release: verify.sh
|
||
Only in FrogPilot/scripts: apply-pr.sh
|
||
Only in FrogPilot/scripts: build_small.sh
|
||
Only in FrogPilot/scripts: cell.sh
|
||
Only in FrogPilot/scripts: checkout-pr.sh
|
||
Only in FrogPilot/scripts: code_stats.py
|
||
Only in FrogPilot/scripts: count_cars.py
|
||
Only in FrogPilot/scripts: disable-powersave.py
|
||
Only in FrogPilot/scripts: __init__.py
|
||
Only in FrogPilot/scripts: launch_corolla.sh
|
||
Only in FrogPilot/scripts: pyqt_demo.py
|
||
Only in FrogPilot/scripts: pyupgrade.sh
|
||
Only in FrogPilot/scripts: retry.sh
|
||
diff -r clearpilot/scripts/stop_updater.sh FrogPilot/scripts/stop_updater.sh
|
||
4c4
|
||
< pkill -2 -f selfdrive.updated
|
||
---
|
||
> pkill -2 -f selfdrive.updated.updated
|
||
Only in FrogPilot/scripts: waste.c
|
||
Only in FrogPilot/scripts: waste.py
|
||
Binary files clearpilot/selfdrive/assets/img_spinner_comma.png and FrogPilot/selfdrive/assets/img_spinner_comma.png differ
|
||
Only in clearpilot/selfdrive/assets: img_spinner_comma.png~
|
||
Binary files clearpilot/selfdrive/assets/img_spinner_track.png and FrogPilot/selfdrive/assets/img_spinner_track.png differ
|
||
diff -r clearpilot/selfdrive/car/honda/values.py FrogPilot/selfdrive/car/honda/values.py
|
||
198,203d197
|
||
< CLARITY = HondaBoschPlatformConfig(
|
||
< "HONDA CLARITY 2018",
|
||
< [HondaCarDocs("Honda Clarity 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)],
|
||
< CarSpecs(mass=4052. * CV.LB_TO_KG, wheelbase=2.75, centerToFrontRatio=0.41, steerRatio=16.50, tireStiffnessFactor=1.),
|
||
< dbc_dict('honda_clarity_hybrid_2018_can_generated', 'acura_ilx_2016_nidec'),
|
||
< )
|
||
211a206,211
|
||
> )
|
||
> CLARITY = HondaNidecPlatformConfig(
|
||
> "HONDA CLARITY 2018",
|
||
> [HondaCarDocs("Honda Clarity 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)],
|
||
> CarSpecs(mass=4052. * CV.LB_TO_KG, wheelbase=2.75, centerToFrontRatio=0.41, steerRatio=16.50, tireStiffnessFactor=1.),
|
||
> dbc_dict('honda_clarity_hybrid_2018_can_generated', 'acura_ilx_2016_nidec'),
|
||
diff -r clearpilot/selfdrive/car/hyundai/carcontroller.py FrogPilot/selfdrive/car/hyundai/carcontroller.py
|
||
124,126c124
|
||
< # CLEARPILOT TEST self.CS.lkas_enabled
|
||
< # can_sends.append(hyundaicanfd.create_lfahda_cluster(self.packer, self.CAN, CC.enabled, CC.latActive))
|
||
< can_sends.append(hyundaicanfd.create_lfahda_cluster(self.packer, self.CAN, CS.lkas_enabled, CS.lkas_enabled))
|
||
---
|
||
> can_sends.append(hyundaicanfd.create_lfahda_cluster(self.packer, self.CAN, CC.enabled, CC.latActive))
|
||
diff -r clearpilot/selfdrive/car/hyundai/carstate.py FrogPilot/selfdrive/car/hyundai/carstate.py
|
||
281,289c281
|
||
<
|
||
< # CLEARPILOT fix
|
||
< lkas_enabled = False
|
||
< try:
|
||
< lkas_enabled = cp.vl[self.cruise_btns_msg_canfd]["LKAS_BTN"]
|
||
< except:
|
||
< nothing = 0
|
||
<
|
||
< self.lkas_enabled = lkas_enabled
|
||
---
|
||
> self.lkas_enabled = cp.vl[self.cruise_btns_msg_canfd]["LFA_BTN"]
|
||
diff -r clearpilot/selfdrive/car/hyundai/hyundaicanfd.py FrogPilot/selfdrive/car/hyundai/hyundaicanfd.py
|
||
43,44c43,44
|
||
< "LKA_MODE": 2, # CP: Whats this?
|
||
< "LKA_ICON": 2 if lat_active else 1, # CP: Whats this?
|
||
---
|
||
> "LKA_MODE": 2,
|
||
> "LKA_ICON": 2 if lat_active else 1,
|
||
116d115
|
||
< # CLEARPILOT changed HDA icons
|
||
119,122c118,119
|
||
< # 0 off, 1 gray, 2 green, 3 blinking (wheel icon)
|
||
< # CP: Is this actually the wheel? Might this be the HDA2 thing?
|
||
< "HDA_ICON": 0, # Intention is to have this represent stock HDA mode
|
||
< "LFA_ICON": 2 if enabled else 1 if lat_active else 0,
|
||
---
|
||
> "HDA_ICON": 1 if enabled else 0,
|
||
> "LFA_ICON": 2 if lat_active else 0,
|
||
diff -r clearpilot/selfdrive/car/toyota/carcontroller.py FrogPilot/selfdrive/car/toyota/carcontroller.py
|
||
10c10
|
||
< UNSUPPORTED_DSU_CAR, STOP_AND_GO_CAR
|
||
---
|
||
> UNSUPPORTED_DSU_CAR, STOP_AND_GO_CAR, TSS2_CAR
|
||
171c171
|
||
< if CC.longActive and not self.prohibit_neg_calculation and (self.cydia_tune or self.frogs_go_moo_tune):
|
||
---
|
||
> if CC.longActive and not self.prohibit_neg_calculation and (self.cydia_tune or self.frogs_go_moo_tune and self.CP.carFingerprint not in TSS2_CAR):
|
||
231c231
|
||
< accel_raw = -2.5 if stopping and (self.cydia_tune or self.frogs_go_moo_tune) else actuators.accel
|
||
---
|
||
> accel_raw = -2.5 if stopping and self.cydia_tune else actuators.accel
|
||
diff -r clearpilot/selfdrive/car/toyota/carstate.py FrogPilot/selfdrive/car/toyota/carstate.py
|
||
224a225,227
|
||
> self.params_memory.put_bool("EcoGearOn", cp.vl["GEAR_PACKET"]['ECON_ON'])
|
||
> self.params_memory.put_bool("SportGearOn", cp.vl["GEAR_PACKET"]['SPORT_ON'])
|
||
>
|
||
diff -r clearpilot/selfdrive/car/toyota/interface.py FrogPilot/selfdrive/car/toyota/interface.py
|
||
152,155d151
|
||
< # on stock Toyota this is -2.5
|
||
< ret.stopAccel = -2.5
|
||
< ret.stoppingDecelRate = 0.3 # reach stopping target smoothly
|
||
<
|
||
158a155,157
|
||
> tune.kpBP = [0., 5., 20.]
|
||
> tune.kpV = [1.3, 1.0, 0.7]
|
||
>
|
||
163,165c162,167
|
||
< # In MPH = [ 0, 11, 45]
|
||
< tune.kpBP = [0., 5., 20.]
|
||
< tune.kpV = [1.3, 1.0, 0.7]
|
||
---
|
||
> if candidate in TSS2_CAR:
|
||
> ret.stopAccel = -0.40 # Toyota requests -0.4 when stopped
|
||
> ret.stoppingDecelRate = 0.09 # reach stopping target smoothly
|
||
> else:
|
||
> ret.stopAccel = -2.5 # on stock Toyota this is -2.5
|
||
> ret.stoppingDecelRate = 0.17
|
||
167,168c169,170
|
||
< ret.vEgoStopping = 0.15 # car is near 0.1 to 0.2 when car starts requesting stopping accel
|
||
< ret.vEgoStarting = 0.15 # needs to be > or == vEgoStopping
|
||
---
|
||
> ret.vEgoStopping = 0.15 # car is near 0.1 to 0.2 when car starts requesting stopping accel
|
||
> ret.vEgoStarting = 0.15 # needs to be > or == vEgoStopping
|
||
Only in clearpilot/selfdrive: clearpilot
|
||
diff -r clearpilot/selfdrive/controls/controlsd.py FrogPilot/selfdrive/controls/controlsd.py
|
||
3a4
|
||
> import random
|
||
79c80
|
||
< self.radarless_model = self.params.get("Model", encoding='utf-8') in RADARLESS_MODELS
|
||
---
|
||
> self.radarless_model = self.params.get("Model", block=True, encoding='utf-8') in RADARLESS_MODELS
|
||
203d203
|
||
< self.crashed_timer = 0
|
||
312,321c312,323
|
||
< # CLEARPILOT - Disabled lane change helper
|
||
< # CLEARPILOT TODO: Make this a toggle
|
||
< NoLaneChange = False
|
||
< if not NoLaneChange:
|
||
< if self.sm['modelV2'].meta.laneChangeState == LaneChangeState.preLaneChange:
|
||
< direction = self.sm['modelV2'].meta.laneChangeDirection
|
||
< if (CS.leftBlindspot and direction == LaneChangeDirection.left) or \
|
||
< (CS.rightBlindspot and direction == LaneChangeDirection.right):
|
||
< if self.loud_blindspot_alert:
|
||
< self.events.add(EventName.laneChangeBlockedLoud)
|
||
---
|
||
> if self.sm['modelV2'].meta.laneChangeState == LaneChangeState.preLaneChange:
|
||
> direction = self.sm['modelV2'].meta.laneChangeDirection
|
||
> if (CS.leftBlindspot and direction == LaneChangeDirection.left) or \
|
||
> (CS.rightBlindspot and direction == LaneChangeDirection.right):
|
||
> if self.loud_blindspot_alert:
|
||
> self.events.add(EventName.laneChangeBlockedLoud)
|
||
> else:
|
||
> self.events.add(EventName.laneChangeBlocked)
|
||
> else:
|
||
> if direction == LaneChangeDirection.left:
|
||
> if self.sm['frogpilotPlan'].laneWidthLeft >= self.lane_detection_width:
|
||
> self.events.add(EventName.preLaneChangeLeft)
|
||
323c325
|
||
< self.events.add(EventName.laneChangeBlocked)
|
||
---
|
||
> self.events.add(EventName.noLaneAvailable)
|
||
325,329c327,328
|
||
< if direction == LaneChangeDirection.left:
|
||
< if self.sm['frogpilotPlan'].laneWidthLeft >= self.lane_detection_width:
|
||
< self.events.add(EventName.preLaneChangeLeft)
|
||
< else:
|
||
< self.events.add(EventName.noLaneAvailable)
|
||
---
|
||
> if self.sm['frogpilotPlan'].laneWidthRight >= self.lane_detection_width:
|
||
> self.events.add(EventName.preLaneChangeRight)
|
||
331,337c330,333
|
||
< if self.sm['frogpilotPlan'].laneWidthRight >= self.lane_detection_width:
|
||
< self.events.add(EventName.preLaneChangeRight)
|
||
< else:
|
||
< self.events.add(EventName.noLaneAvailable)
|
||
< elif self.sm['modelV2'].meta.laneChangeState in (LaneChangeState.laneChangeStarting,
|
||
< LaneChangeState.laneChangeFinishing):
|
||
< self.events.add(EventName.laneChange)
|
||
---
|
||
> self.events.add(EventName.noLaneAvailable)
|
||
> elif self.sm['modelV2'].meta.laneChangeState in (LaneChangeState.laneChangeStarting,
|
||
> LaneChangeState.laneChangeFinishing):
|
||
> self.events.add(EventName.laneChange)
|
||
633,635d628
|
||
< # CLEARPILOT test lane change
|
||
< clearpilot_disable_lat_on_lane_change = True
|
||
<
|
||
640,641d632
|
||
< if clearpilot_disable_lat_on_lane_change:
|
||
< CC.latActive = False
|
||
704,706c695,702
|
||
< if self.sm.frame % 10000 == 0 and self.random_events:
|
||
< lac_log.active and self.events.add(EventName.firefoxSteerSaturated)
|
||
< self.params_memory.put_int("CurrentRandomEvent", 1)
|
||
---
|
||
> event_choices = [1, 2]
|
||
> if self.sm.frame % (10000 // len(event_choices)) == 0 and self.random_events:
|
||
> event_choice = random.choice(event_choices)
|
||
> if event_choice == 1:
|
||
> lac_log.active and self.events.add(EventName.firefoxSteerSaturated)
|
||
> self.params_memory.put_int("CurrentRandomEvent", 1)
|
||
> elif event_choice == 2:
|
||
> lac_log.active and self.events.add(EventName.goatSteerSaturated)
|
||
1014,1017c1010,1011
|
||
< if os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt')) and self.crashed_timer < 10:
|
||
< self.events.add(EventName.openpilotCrashed)
|
||
<
|
||
< if self.random_events and not self.openpilot_crashed_triggered:
|
||
---
|
||
> if os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt')) and not self.openpilot_crashed_triggered:
|
||
> if self.random_events:
|
||
1019c1013,1014
|
||
< self.openpilot_crashed_triggered = True
|
||
---
|
||
> else:
|
||
> self.events.add(EventName.openpilotCrashed)
|
||
1021c1016
|
||
< self.crashed_timer += DT_CTRL
|
||
---
|
||
> self.openpilot_crashed_triggered = True
|
||
1101c1096
|
||
< current_total_distance = self.params_storage.get_float("FrogPilotKilometers")
|
||
---
|
||
> current_total_distance = self.params.get_float("FrogPilotKilometers")
|
||
1103c1098,1102
|
||
< self.params_storage.put_float_nonblocking("FrogPilotKilometers", current_total_distance + distance_to_add)
|
||
---
|
||
> new_total_distance = current_total_distance + distance_to_add
|
||
>
|
||
> self.params.put_float_nonblocking("FrogPilotKilometers", new_total_distance)
|
||
> self.params_storage.put_float_nonblocking("FrogPilotKilometers", new_total_distance)
|
||
>
|
||
1106c1105
|
||
< current_total_time = self.params_storage.get_float("FrogPilotMinutes")
|
||
---
|
||
> current_total_time = self.params.get_float("FrogPilotMinutes")
|
||
1108c1107,1111
|
||
< self.params_storage.put_float_nonblocking("FrogPilotMinutes", current_total_time + time_to_add)
|
||
---
|
||
> new_total_time = current_total_time + time_to_add
|
||
>
|
||
> self.params.put_float_nonblocking("FrogPilotMinutes", new_total_time)
|
||
> self.params_storage.put_float_nonblocking("FrogPilotMinutes", new_total_time)
|
||
>
|
||
1112,1113c1115,1119
|
||
< current_total_drives = self.params_storage.get_int("FrogPilotDrives")
|
||
< self.params_storage.put_int_nonblocking("FrogPilotDrives", current_total_drives + 1)
|
||
---
|
||
> new_total_drives = self.params.get_int("FrogPilotDrives") + 1
|
||
>
|
||
> self.params.put_int_nonblocking("FrogPilotDrives", new_total_drives)
|
||
> self.params_storage.put_int_nonblocking("FrogPilotDrives", new_total_drives)
|
||
>
|
||
diff -r clearpilot/selfdrive/controls/lib/desire_helper.py FrogPilot/selfdrive/controls/lib/desire_helper.py
|
||
13d12
|
||
<
|
||
65,67d63
|
||
< # Clearpilot test lane change no lat
|
||
< clearpilot_disable_lat_on_lane_change = True
|
||
<
|
||
78c74
|
||
< if (not clearpilot_disable_lat_on_lane_change and not lateral_active) or self.lane_change_timer > LANE_CHANGE_TIME_MAX:
|
||
---
|
||
> if not lateral_active or self.lane_change_timer > LANE_CHANGE_TIME_MAX:
|
||
122,131c118,123
|
||
< if clearpilot_disable_lat_on_lane_change:
|
||
< if not one_blinker:
|
||
< self.lane_change_state = LaneChangeState.laneChangeFinishing
|
||
< else:
|
||
< # fade out over .5s
|
||
< self.lane_change_ll_prob = max(self.lane_change_ll_prob - 2 * DT_MDL, 0.0)
|
||
<
|
||
< # 98% certainty
|
||
< if lane_change_prob < 0.02 and self.lane_change_ll_prob < 0.01:
|
||
< self.lane_change_state = LaneChangeState.laneChangeFinishing
|
||
---
|
||
> # fade out over .5s
|
||
> self.lane_change_ll_prob = max(self.lane_change_ll_prob - 2 * DT_MDL, 0.0)
|
||
>
|
||
> # 98% certainty
|
||
> if lane_change_prob < 0.02 and self.lane_change_ll_prob < 0.01:
|
||
> self.lane_change_state = LaneChangeState.laneChangeFinishing
|
||
diff -r clearpilot/selfdrive/controls/lib/events.py FrogPilot/selfdrive/controls/lib/events.py
|
||
203,208d202
|
||
< # ClearPilot
|
||
< class InvisibleAlert(Alert):
|
||
< def __init__(self, alert_text_1: str, alert_text_2: str = "", alert_status=AlertStatus.normal):
|
||
< super().__init__(alert_text_1, alert_text_2,
|
||
< alert_status, AlertSize.none,
|
||
< Priority.LOWER, VisualAlert.none, AudibleAlert.none, 5.),
|
||
241,243c235
|
||
< # CLEARPILOT
|
||
< return Alert("","", AlertStatus.frogpilot, AlertSize.none, Priority.LOW, VisualAlert.none, AudibleAlert.none, 0.2)
|
||
< # return StartupAlert("Hippity hoppity this is my property", "so I do what I want 🐸", alert_status=AlertStatus.frogpilot)
|
||
---
|
||
> return StartupAlert("Hippity hoppity this is my property", "so I do what I want 🐸", alert_status=AlertStatus.frogpilot)
|
||
270c262
|
||
< AlertStatus.normal, AlertSize.small,
|
||
---
|
||
> AlertStatus.normal, AlertSize.mid,
|
||
282,288c274,278
|
||
< # CLearpilot
|
||
< return Alert("","", AlertStatus.frogpilot, AlertSize.none, Priority.LOW, VisualAlert.none, AudibleAlert.none, 0.2)
|
||
< # return Alert(
|
||
< # "NNFF Torque Controller loaded",
|
||
< # model_name,
|
||
< # AlertStatus.frogpilot, AlertSize.mid,
|
||
< # Priority.LOW, VisualAlert.none, AudibleAlert.engage, 5.0)
|
||
---
|
||
> return Alert(
|
||
> "NNFF Torque Controller loaded",
|
||
> model_name,
|
||
> AlertStatus.frogpilot, AlertSize.mid,
|
||
> Priority.LOW, VisualAlert.none, AudibleAlert.engage, 5.0)
|
||
514d503
|
||
< # CLEARPILOT
|
||
517,520c506,509
|
||
< "PAY ATTENTION",
|
||
< "DRIVER DISTRACTED",
|
||
< AlertStatus.userPrompt, AlertSize.full,
|
||
< Priority.MID, VisualAlert.steerRequired, AudibleAlert.warningImmediate, .1),
|
||
---
|
||
> "DISENGAGE IMMEDIATELY",
|
||
> "Driver Distracted",
|
||
> AlertStatus.critical, AlertSize.full,
|
||
> Priority.HIGH, VisualAlert.steerRequired, AudibleAlert.warningImmediate, .1),
|
||
539d527
|
||
< # CLEARPILOT
|
||
542c530
|
||
< "TOUCH STEERING WHEEL",
|
||
---
|
||
> "DISENGAGE IMMEDIATELY",
|
||
544,545c532,533
|
||
< AlertStatus.userPrompt, AlertSize.full,
|
||
< Priority.MID, VisualAlert.steerRequired, AudibleAlert.warningImmediate, .1),
|
||
---
|
||
> AlertStatus.critical, AlertSize.full,
|
||
> Priority.HIGH, VisualAlert.steerRequired, AudibleAlert.warningImmediate, .1),
|
||
1076c1064
|
||
< Priority.HIGH, VisualAlert.none, AudibleAlert.none, .1),
|
||
---
|
||
> Priority.HIGHEST, VisualAlert.none, AudibleAlert.none, 10.),
|
||
1153c1141
|
||
< Priority.HIGHEST, VisualAlert.none, AudibleAlert.fart, 4.),
|
||
---
|
||
> Priority.HIGHEST, VisualAlert.none, AudibleAlert.fart, 10.),
|
||
diff -r clearpilot/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py FrogPilot/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py
|
||
365c365,366
|
||
< lead_xv_0 = self.process_lead(lead_one, self.increased_stopping_distance if not trafficModeActive else 0)
|
||
---
|
||
> increase_distance = max(self.increased_stopping_distance - v_ego if not trafficModeActive else 0, 0)
|
||
> lead_xv_0 = self.process_lead(lead_one, increase_distance)
|
||
diff -r clearpilot/selfdrive/controls/lib/longitudinal_planner.py FrogPilot/selfdrive/controls/lib/longitudinal_planner.py
|
||
144c144
|
||
< self.radarless_model = self.params.get("Model", encoding='utf-8') in RADARLESS_MODELS
|
||
---
|
||
> self.radarless_model = self.params.get("Model", block=True, encoding='utf-8') in RADARLESS_MODELS
|
||
146c146
|
||
< self.release = get_short_branch() == "clearpilot"
|
||
---
|
||
> self.release = get_short_branch() == "FrogPilot"
|
||
253c253
|
||
< self.taco_tune = lateral_tune and self.params.get_bool("TacoTune") and not self.release
|
||
---
|
||
> self.taco_tune = lateral_tune and self.params.get_bool("TacoTune")
|
||
Only in clearpilot/selfdrive/controls: radardless.py
|
||
diff -r clearpilot/selfdrive/controls/radard.py FrogPilot/selfdrive/controls/radard.py
|
||
15a16
|
||
> from openpilot.selfdrive.frogpilot.controls.lib.model_manager import RADARLESS_MODELS
|
||
196a198,199
|
||
> self.points: dict[int, tuple[float, float, float]] = {}
|
||
>
|
||
207a211
|
||
> self.radar_tracks_valid = False
|
||
293a298,323
|
||
> def update_radardless(self, rr: Optional[car.RadarData]):
|
||
> radar_points = []
|
||
> radar_errors = []
|
||
> if rr is not None:
|
||
> radar_points = rr.points
|
||
> radar_errors = rr.errors
|
||
>
|
||
> self.radar_tracks_valid = len(radar_errors) == 0
|
||
>
|
||
> self.points = {}
|
||
> for pt in radar_points:
|
||
> self.points[pt.trackId] = (pt.dRel, pt.yRel, pt.vRel)
|
||
>
|
||
> def publish_radardless(self):
|
||
> tracks_msg = messaging.new_message('liveTracks', len(self.points))
|
||
> tracks_msg.valid = self.radar_tracks_valid
|
||
> for index, tid in enumerate(sorted(self.points.keys())):
|
||
> tracks_msg.liveTracks[index] = {
|
||
> "trackId": tid,
|
||
> "dRel": float(self.points[tid][0]) + RADAR_TO_CAMERA,
|
||
> "yRel": -float(self.points[tid][1]),
|
||
> "vRel": float(self.points[tid][2]),
|
||
> }
|
||
>
|
||
> return tracks_msg
|
||
>
|
||
314,315c344
|
||
< sm = messaging.SubMaster(['modelV2', 'carState'], frequency=int(1./DT_CTRL))
|
||
< pm = messaging.PubMaster(['radarState', 'liveTracks'])
|
||
---
|
||
> pub_sock = messaging.pub_sock('liveTracks')
|
||
318a348,349
|
||
> # TODO timing is different between cars, need a single time step for all cars
|
||
> # TODO just take the fastest one for now, and keep resending same messages for slower radars
|
||
322,327c353
|
||
< while 1:
|
||
< can_strings = messaging.drain_sock_raw(can_sock, wait_for_one=True)
|
||
< rr = RI.update(can_strings)
|
||
< sm.update(0)
|
||
< if rr is None:
|
||
< continue
|
||
---
|
||
> RADARLESS = Params().get("Model", block=True, encoding='utf-8') in RADARLESS_MODELS
|
||
329,332c355,378
|
||
< RD.update(sm, rr)
|
||
< RD.publish(pm, -rk.remaining*1000.0)
|
||
<
|
||
< rk.monitor_time()
|
||
---
|
||
> if not RADARLESS:
|
||
> sm = messaging.SubMaster(['modelV2', 'carState'], frequency=int(1./DT_CTRL))
|
||
> pm = messaging.PubMaster(['radarState', 'liveTracks'])
|
||
>
|
||
> while True:
|
||
> can_strings = messaging.drain_sock_raw(can_sock, wait_for_one=True)
|
||
> rr = RI.update(can_strings)
|
||
> sm.update(0)
|
||
> if rr is None:
|
||
> continue
|
||
>
|
||
> RD.update(sm, rr)
|
||
> RD.publish(pm, -rk.remaining*1000.0)
|
||
> rk.monitor_time()
|
||
> else:
|
||
> while True:
|
||
> can_strings = messaging.drain_sock_raw(can_sock, wait_for_one=True)
|
||
> rr = RI.update(can_strings)
|
||
> if rr is None:
|
||
> continue
|
||
>
|
||
> RD.update_radardless(rr)
|
||
> msg = RD.publish_radardless()
|
||
> pub_sock.send(msg.to_bytes())
|
||
333a380
|
||
> rk.monitor_time()
|
||
diff -r clearpilot/selfdrive/frogpilot/controls/frogpilot_planner.py FrogPilot/selfdrive/frogpilot/controls/frogpilot_planner.py
|
||
65c65
|
||
< self.release = get_short_branch() == "clearpilot"
|
||
---
|
||
> self.release = get_short_branch() == "FrogPilot"
|
||
67c67
|
||
< self.radarless_model = self.params.get("Model", encoding='utf-8') in RADARLESS_MODELS
|
||
---
|
||
> self.radarless_model = self.params.get("Model", block=True, encoding='utf-8') in RADARLESS_MODELS
|
||
73a74
|
||
> self.road_curvature = 0
|
||
80a82,83
|
||
> v_cruise_changed = (self.mtsc_target or self.vtsc_target) < v_cruise
|
||
>
|
||
84c87
|
||
< if self.acceleration_profile == 1:
|
||
---
|
||
> if self.acceleration_profile == 1 or self.params_memory.get_bool("EcoGearOn"):
|
||
86c89
|
||
< elif self.acceleration_profile in (2, 3):
|
||
---
|
||
> elif self.acceleration_profile in (2, 3) or self.params_memory.get_bool("SportGearOn"):
|
||
93,95c96
|
||
< v_cruise_changed = (self.mtsc_target or self.vtsc_target) < v_cruise
|
||
<
|
||
< if self.deceleration_profile == 1 and not v_cruise_changed:
|
||
---
|
||
> if (self.deceleration_profile == 1 or self.params_memory.get_bool("EcoGearOn")) and not v_cruise_changed:
|
||
97c98
|
||
< elif self.deceleration_profile == 2 and not v_cruise_changed:
|
||
---
|
||
> elif (self.deceleration_profile == 2 or self.params_memory.get_bool("SportGearOn")) and not v_cruise_changed:
|
||
112c113,114
|
||
< road_curvature = calculate_road_curvature(modelData, v_ego)
|
||
---
|
||
> if self.conditional_experimental_mode and self.CP.openpilotLongitudinalControl or self.green_light_alert:
|
||
> self.cem.update(carState, controlsState.enabled, frogpilotNavigation, self.lead_one, modelData, self.road_curvature, self.t_follow, v_ego)
|
||
116a119,120
|
||
> self.jerk, self.t_follow = self.update_follow_values(base_jerk, self.lead_one, base_t_follow, frogpilotCarControl.trafficModeActive, v_ego, v_lead)
|
||
>
|
||
120d123
|
||
< self.jerk, self.t_follow = self.update_follow_values(base_jerk, self.lead_one, base_t_follow, frogpilotCarControl.trafficModeActive, v_ego, v_lead)
|
||
124a128
|
||
> self.jerk = 1
|
||
127,131d130
|
||
< self.v_cruise = self.update_v_cruise(carState, controlsState, controlsState.enabled, liveLocationKalman, modelData, road_curvature, v_cruise, v_ego)
|
||
<
|
||
< if self.conditional_experimental_mode and self.CP.openpilotLongitudinalControl or self.green_light_alert:
|
||
< self.cem.update(carState, controlsState.enabled, frogpilotNavigation, self.lead_one, modelData, road_curvature, self.t_follow, v_ego)
|
||
<
|
||
134c133,134
|
||
< if len(model_leads) > 0:
|
||
---
|
||
>
|
||
> if len(list(modelData.leadsV3)) > 0:
|
||
141a142,145
|
||
> self.road_curvature = calculate_road_curvature(modelData, v_ego)
|
||
>
|
||
> self.v_cruise = self.update_v_cruise(carState, controlsState, controlsState.enabled, liveLocationKalman, modelData, v_cruise, v_ego)
|
||
>
|
||
150c154
|
||
< # Offset by FrogAi for FrogPilot for a more natural takeoff with a lead
|
||
---
|
||
> # Offset by FrogAi for FrogPilot for a more natural approach to a faster lead
|
||
152c156
|
||
< distance_factor = np.maximum(1, lead_distance - (v_ego * t_follow))
|
||
---
|
||
> distance_factor = np.maximum(lead_distance - (v_ego * t_follow), 1)
|
||
160,161c164,165
|
||
< distance_factor = np.maximum(1, lead_distance - (v_lead * t_follow))
|
||
< far_lead_offset = max(lead_distance - CITY_SPEED_LIMIT, 0) if self.smoother_braking_far_lead else 0
|
||
---
|
||
> distance_factor = np.maximum(lead_distance - (v_lead * t_follow), 1)
|
||
> far_lead_offset = max(lead_distance - (v_ego * t_follow) - stopping_distance, 0) if self.smoother_braking_far_lead else 0
|
||
164c168
|
||
< jerk *= max(braking_offset**(1 / COMFORT_BRAKE), 1)
|
||
---
|
||
> jerk *= np.minimum(braking_offset, COMFORT_BRAKE)
|
||
169c173
|
||
< def update_v_cruise(self, carState, controlsState, enabled, liveLocationKalman, modelData, road_curvature, v_cruise, v_ego):
|
||
---
|
||
> def update_v_cruise(self, carState, controlsState, enabled, liveLocationKalman, modelData, v_cruise, v_ego):
|
||
183c187
|
||
< if self.mtsc_curvature_check and road_curvature < 1.0 and not mtsc_active:
|
||
---
|
||
> if self.mtsc_curvature_check and self.road_curvature < 1.0 and not mtsc_active:
|
||
247c251
|
||
< frogpilotPlan.accelerationJerk = A_CHANGE_COST * (float(self.jerk) if self.lead_one.status else 1)
|
||
---
|
||
> frogpilotPlan.accelerationJerk = A_CHANGE_COST * float(self.jerk)
|
||
252c256
|
||
< frogpilotPlan.egoJerk = J_EGO_COST * (float(self.jerk) if self.lead_one.status else 1)
|
||
---
|
||
> frogpilotPlan.egoJerk = J_EGO_COST * float(self.jerk)
|
||
296,297c300,301
|
||
< self.traffic_mode_jerk = [self.traffic_jerk, self.aggressive_jerk] if self.custom_personalities and not self.release else [1.0, 0.5]
|
||
< self.traffic_mode_t_follow = [self.traffic_follow, self.aggressive_follow] if self.custom_personalities and not self.release else [0.5, 1.0]
|
||
---
|
||
> self.traffic_mode_jerk = [self.traffic_jerk, self.aggressive_jerk] if self.custom_personalities else [1.0, 0.5]
|
||
> self.traffic_mode_t_follow = [self.traffic_follow, self.aggressive_follow] if self.custom_personalities else [0.5, 1.0]
|
||
312,313c316,317
|
||
< self.smoother_braking_far_lead = self.smoother_braking and self.params.get_bool("SmoothBrakingFarLead") and not self.release
|
||
< self.smoother_braking_jerk = self.smoother_braking and self.params.get_bool("SmoothBrakingJerk") and not self.release
|
||
---
|
||
> self.smoother_braking_far_lead = self.smoother_braking and self.params.get_bool("SmoothBrakingFarLead")
|
||
> self.smoother_braking_jerk = self.smoother_braking and self.params.get_bool("SmoothBrakingJerk")
|
||
diff -r clearpilot/selfdrive/frogpilot/controls/lib/conditional_experimental_mode.py FrogPilot/selfdrive/frogpilot/controls/lib/conditional_experimental_mode.py
|
||
135,137c135,137
|
||
< # Setting a limit of 5.0 helps prevent it triggering for red lights
|
||
< curve_detected = 5.0 >= road_curvature > 1.6
|
||
< curve_active = 5.0 >= road_curvature > 1.1 and self.curve_detected
|
||
---
|
||
> # Setting a limit of 3.5 helps prevent it triggering for red lights
|
||
> curve_detected = 3.5 >= road_curvature > 1.6
|
||
> curve_active = 3.5 >= road_curvature > 1.1 and self.curve_detected
|
||
diff -r clearpilot/selfdrive/frogpilot/controls/lib/frogpilot_functions.py FrogPilot/selfdrive/frogpilot/controls/lib/frogpilot_functions.py
|
||
8d7
|
||
< import time
|
||
72,74c71
|
||
< # CLEARPILOT - disabled backups
|
||
< return
|
||
< frogpilot_backup_directory = "/data/cp_backups"
|
||
---
|
||
> frogpilot_backup_directory = "/data/backups"
|
||
104,105c101
|
||
< # CLEARPILOT changed to cp_toggle_backups
|
||
< toggle_backup_directory = "/data/cp_toggle_backups"
|
||
---
|
||
> toggle_backup_directory = "/data/toggle_backups"
|
||
124,139d119
|
||
< def delete_logs(cls):
|
||
< directories_to_check = []
|
||
< for root, dirs, files in os.walk('/data/media/0/realdata/', topdown=False):
|
||
< for name in files:
|
||
< filepath = os.path.join(root, name)
|
||
< if time.time() - max(os.path.getctime(filepath), os.path.getmtime(filepath)) < 3600:
|
||
< os.remove(filepath)
|
||
< if root not in directories_to_check:
|
||
< directories_to_check.append(root)
|
||
< for directory in directories_to_check:
|
||
< try:
|
||
< os.rmdir(directory)
|
||
< except OSError:
|
||
< pass
|
||
<
|
||
< @classmethod
|
||
148,158c128,139
|
||
< # CLEARPILOT
|
||
< # Disable boot logo
|
||
< #frogpilot_boot_logo = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/frogpilot_boot_logo.png'
|
||
< #boot_logo_location = '/usr/comma/bg.jpg'
|
||
<
|
||
< #remount_cmd = ['sudo', 'mount', '-o', 'remount,rw', '/']
|
||
< #cls.run_cmd(remount_cmd, "File system remounted as read-write.", "Failed to remount file system")
|
||
<
|
||
< #if not filecmp.cmp(frogpilot_boot_logo, boot_logo_location, shallow=False):
|
||
< # copy_cmd = ['sudo', 'cp', frogpilot_boot_logo, boot_logo_location]
|
||
< # cls.run_cmd(copy_cmd, "Successfully replaced bg.jpg with frogpilot_boot_logo.png.", "Failed to replace boot logo")
|
||
---
|
||
> frogpilot_boot_logo = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/frogpilot_boot_logo.png'
|
||
> boot_logo_location = '/usr/comma/bg.jpg'
|
||
>
|
||
> remount_cmd = ['sudo', 'mount', '-o', 'remount,rw', '/']
|
||
> cls.run_cmd(remount_cmd, "File system remounted as read-write.", "Failed to remount file system")
|
||
>
|
||
> if not filecmp.cmp(frogpilot_boot_logo, boot_logo_location, shallow=False):
|
||
> copy_cmd = ['sudo', 'cp', frogpilot_boot_logo, boot_logo_location]
|
||
> cls.run_cmd(copy_cmd, "Successfully replaced bg.jpg with frogpilot_boot_logo.png.", "Failed to replace boot logo")
|
||
>
|
||
> if Params("/persist/params").get_bool("FrogsGoMoo"):
|
||
> subprocess.run(["python", "/persist/frogsgomoo.py"])
|
||
diff -r clearpilot/selfdrive/frogpilot/controls/lib/lock_doors.py FrogPilot/selfdrive/frogpilot/controls/lib/lock_doors.py
|
||
37c37
|
||
< HARDWARE.soft_reboot()
|
||
---
|
||
> HARDWARE.reboot()
|
||
diff -r clearpilot/selfdrive/frogpilot/controls/lib/model_manager.py FrogPilot/selfdrive/frogpilot/controls/lib/model_manager.py
|
||
9,11c9,10
|
||
< # CLEARPILOT this doesnt really matter.
|
||
< VERSION = 'v1' if get_short_branch() == "clearpilot" else 'v2'
|
||
< REPOSITORY_URL = 'https://privategit.hanson.xyz/brianhansonxyz/clearpilot'
|
||
---
|
||
> VERSION = 'v1' if get_short_branch() == "FrogPilot" else 'v2'
|
||
> REPOSITORY_URL = 'https://github.com/FrogAi/FrogPilot-Resources/releases/download'
|
||
15,16c14
|
||
< # CLEARPILOT changed path.
|
||
< MODELS_PATH = '/data/openpilot/selfdrive/clearpilot/models'
|
||
---
|
||
> MODELS_PATH = '/data/models'
|
||
18c16
|
||
< NAVIGATIONLESS_MODELS = {"radical-turtle", "wd-40"}
|
||
---
|
||
> NAVIGATION_MODELS = {"certified-herbalist", "duck-amigo", "los-angeles", "recertified-herbalist"}
|
||
29,40c27,36
|
||
< if available_models:
|
||
< current_model = params.get("Model", encoding='utf-8')
|
||
< current_model_file = os.path.join(MODELS_PATH, f"{current_model}.thneed")
|
||
<
|
||
< if current_model not in available_models or not os.path.exists(current_model_file):
|
||
< params.put("Model", DEFAULT_MODEL)
|
||
< params.put("ModelName", DEFAULT_MODEL_NAME)
|
||
<
|
||
< for model_file in os.listdir(MODELS_PATH):
|
||
< if model_file.endswith('.thneed') and model_file[:-7] not in available_models:
|
||
< os.remove(os.path.join(MODELS_PATH, model_file))
|
||
< else:
|
||
---
|
||
> if available_models is None:
|
||
> return
|
||
>
|
||
> current_model = params.get("Model", block=True, encoding='utf-8')
|
||
> if current_model == DEFAULT_MODEL:
|
||
> return
|
||
>
|
||
> current_model_file = os.path.join(MODELS_PATH, f"{current_model}.thneed")
|
||
>
|
||
> if current_model not in available_models or not os.path.exists(current_model_file):
|
||
43a40,43
|
||
> for model_file in os.listdir(MODELS_PATH):
|
||
> if model_file.endswith('.thneed') and model_file[:-7] not in available_models:
|
||
> os.remove(os.path.join(MODELS_PATH, model_file))
|
||
>
|
||
82,100c82,98
|
||
< # CLEARPILOT hardcoded list
|
||
< models = """
|
||
< wd-40 - WD40 (Default)
|
||
< duck-amigo - Duck Amigo
|
||
< """
|
||
< # todo - get farmville working
|
||
< # farmville - FarmVille
|
||
< model_info = [line.strip().split(' - ') for line in models.strip().splitlines() if ' - ' in line]
|
||
<
|
||
< available_models = ','.join(model[0] for model in model_info)
|
||
< available_models_names = [model[1] for model in model_info]
|
||
<
|
||
< params.put("AvailableModels", available_models)
|
||
< params.put("AvailableModelsNames", ','.join(available_models_names))
|
||
<
|
||
< current_model_name = params.get("ModelName", encoding='utf-8')
|
||
< if current_model_name not in available_models_names and "(Default)" in current_model_name:
|
||
< updated_model_name = current_model_name.replace("(Default)", "").strip()
|
||
< params.put("ModelName", updated_model_name)
|
||
---
|
||
> model_names_url = f"https://raw.githubusercontent.com/FrogAi/FrogPilot-Resources/master/model_names_{VERSION}.txt"
|
||
>
|
||
> for attempt in range(5):
|
||
> try:
|
||
> with urllib.request.urlopen(model_names_url) as response:
|
||
> model_info = [line.decode('utf-8').strip().split(' - ') for line in response.readlines() if ' - ' in line.decode('utf-8')]
|
||
>
|
||
> available_models = ','.join(model[0] for model in model_info)
|
||
> available_models_names = [model[1] for model in model_info]
|
||
>
|
||
> params.put("AvailableModels", available_models)
|
||
> params.put("AvailableModelsNames", ','.join(available_models_names))
|
||
>
|
||
> current_model_name = params.get("ModelName", encoding='utf-8')
|
||
> if current_model_name not in available_models_names and "(Default)" in current_model_name:
|
||
> updated_model_name = current_model_name.replace("(Default)", "").strip()
|
||
> params.put("ModelName", updated_model_name)
|
||
101a100,104
|
||
> except Exception as e:
|
||
> print(f"Failed to update models list. Error: {e}. Retrying...")
|
||
> time.sleep(5)
|
||
> else:
|
||
> print(f"Failed to update models list after 5 attempts. Giving up... :(")
|
||
diff -r clearpilot/selfdrive/frogpilot/frogpilot_process.py FrogPilot/selfdrive/frogpilot/frogpilot_process.py
|
||
89c89
|
||
< sm['liveLocationKalman'], sm['modelV2'], sm['radarState'])
|
||
---
|
||
> sm['liveLocationKalman'], sm['modelV2'], sm['radarState'])
|
||
Only in clearpilot/selfdrive/frogpilot/navigation/ui: moc_navigation_settings.cc
|
||
diff -r clearpilot/selfdrive/frogpilot/navigation/ui/navigation_settings.cc FrogPilot/selfdrive/frogpilot/navigation/ui/navigation_settings.cc
|
||
212c212
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
Only in clearpilot/selfdrive/frogpilot/screenrecorder: moc_screenrecorder.cc
|
||
diff -r clearpilot/selfdrive/frogpilot/ui/qt/offroad/control_settings.cc FrogPilot/selfdrive/frogpilot/ui/qt/offroad/control_settings.cc
|
||
47c47
|
||
< isRelease = branch == "clearpilot";
|
||
---
|
||
> isRelease = branch == "FrogPilot";
|
||
228c228
|
||
< trafficProfile->setVisible(!isRelease && params.getBool("TrafficMode"));
|
||
---
|
||
> trafficProfile->setVisible(params.getBool("TrafficMode"));
|
||
340,343d339
|
||
< if (isRelease ) {
|
||
< modifiedLateralTuneKeys.erase("TacoTune");
|
||
< }
|
||
<
|
||
386,387c382,383
|
||
< toggle = new FrogPilotParamValueControl(param, title, desc, icon, 1, 100, std::map<int, QString>(), this, false, "%");
|
||
< } else if (param == "SmoothBraking" && !isRelease) {
|
||
---
|
||
> toggle = new FrogPilotParamValueControl(param, title, desc, icon, 1, 99, std::map<int, QString>(), this, false, "%");
|
||
> } else if (param == "SmoothBraking") {
|
||
425,426c421
|
||
< // CLEARPILOT changed path.
|
||
< QDir modelDir("/data/openpilot/selfdrive/clearpilot/models/");
|
||
---
|
||
> QDir modelDir("/data/models/");
|
||
597c592
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
867c862
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
872a868,870
|
||
> modelManagerToggle = static_cast<FrogPilotParamManageControl*>(toggles["ModelSelector"]);
|
||
> steerRatioToggle = static_cast<FrogPilotParamValueToggleControl*>(toggles["SteerRatio"]);
|
||
>
|
||
884,885d881
|
||
<
|
||
< downloadModelBtn->setEnabled(s.scene.online && (!s.scene.started || s.scene.parked));
|
||
894d889
|
||
< FrogPilotParamValueToggleControl *steerRatioToggle = static_cast<FrogPilotParamValueToggleControl*>(toggles["SteerRatio"]);
|
||
898a894,896
|
||
>
|
||
> downloadModelBtn->setEnabled(s.scene.online);
|
||
> modelManagerToggle->setEnabled(!s.scene.started || s.scene.parked);
|
||
928d925
|
||
< FrogPilotParamValueToggleControl *steerRatioToggle = static_cast<FrogPilotParamValueToggleControl*>(toggles["SteerRatio"]);
|
||
1027a1025
|
||
> customCruiseLongToggle->refresh();
|
||
1050,1052c1048,1050
|
||
<
|
||
< //"ConditionalExperimental" , "ExperimentalModeActivation", "VisionTurnControl"
|
||
< std::set<QString> longitudinalKeys = {"CustomPersonalities", "LongitudinalTune", "MTSCEnabled", "SpeedLimitController"};
|
||
---
|
||
>
|
||
> std::set<QString> longitudinalKeys = {"ConditionalExperimental", "CustomPersonalities", "ExperimentalModeActivation",
|
||
> "LongitudinalTune", "MTSCEnabled", "SpeedLimitController", "VisionTurnControl"};
|
||
diff -r clearpilot/selfdrive/frogpilot/ui/qt/offroad/control_settings.h FrogPilot/selfdrive/frogpilot/ui/qt/offroad/control_settings.h
|
||
39a40,43
|
||
> FrogPilotParamManageControl *modelManagerToggle;
|
||
>
|
||
> FrogPilotParamValueToggleControl *steerRatioToggle;
|
||
>
|
||
Only in clearpilot/selfdrive/frogpilot/ui/qt/offroad: moc_control_settings.cc
|
||
Only in clearpilot/selfdrive/frogpilot/ui/qt/offroad: moc_vehicle_settings.cc
|
||
Only in clearpilot/selfdrive/frogpilot/ui/qt/offroad: moc_visual_settings.cc
|
||
diff -r clearpilot/selfdrive/frogpilot/ui/qt/offroad/vehicle_settings.cc FrogPilot/selfdrive/frogpilot/ui/qt/offroad/vehicle_settings.cc
|
||
141c141
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
173c173
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
diff -r clearpilot/selfdrive/frogpilot/ui/qt/offroad/visual_settings.cc FrogPilot/selfdrive/frogpilot/ui/qt/offroad/visual_settings.cc
|
||
5,6c5
|
||
< // CLEARPILOT
|
||
< isRelease = branch == "clearpilot";
|
||
---
|
||
> isRelease = branch == "FrogPilot";
|
||
27d25
|
||
< {"LeadInfo", tr("Lead Info and Logics"), tr("Get detailed information about the vehicle ahead, including speed and distance, and the logic behind your following distance."), ""},
|
||
137c135
|
||
< if (!hasOpenpilotLongitudinal && !hasAutoTune || isRelease) {
|
||
---
|
||
> if (!hasOpenpilotLongitudinal && !hasAutoTune) {
|
||
141,145d138
|
||
< // Clearpilot allow leadInfo (test me)
|
||
< // if (!hasOpenpilotLongitudinal || !isRelease) {
|
||
< // modifiedCustomOnroadUIKeys.erase("LeadInfo");
|
||
< // }
|
||
<
|
||
154,157d146
|
||
< } else if (param == "LeadInfo") {
|
||
< std::vector<QString> leadInfoToggles{"UseSI"};
|
||
< std::vector<QString> leadInfoToggleNames{tr("Use SI Values")};
|
||
< toggle = new FrogPilotParamToggleControl(param, title, desc, icon, leadInfoToggles, leadInfoToggleNames);
|
||
diff -r clearpilot/selfdrive/frogpilot/ui/qt/widgets/frogpilot_controls.h FrogPilot/selfdrive/frogpilot/ui/qt/widgets/frogpilot_controls.h
|
||
352a353,358
|
||
> void setEnabled(bool enabled) {
|
||
> manageButton->setEnabled(enabled);
|
||
> toggle.setEnabled(enabled);
|
||
> toggle.update();
|
||
> }
|
||
>
|
||
Only in clearpilot/selfdrive/frogpilot/ui/qt/widgets: moc_frogpilot_controls.cc
|
||
diff -r clearpilot/selfdrive/locationd/locationd.cc FrogPilot/selfdrive/locationd/locationd.cc
|
||
750c750
|
||
< }
|
||
\ No newline at end of file
|
||
---
|
||
> }
|
||
diff -r clearpilot/selfdrive/locationd/paramsd.py FrogPilot/selfdrive/locationd/paramsd.py
|
||
274c274
|
||
< main()
|
||
\ No newline at end of file
|
||
---
|
||
> main()
|
||
diff -r clearpilot/selfdrive/manager/build.py FrogPilot/selfdrive/manager/build.py
|
||
56d55
|
||
< Path('/data/openpilot/prebuilt').touch()
|
||
diff -r clearpilot/selfdrive/manager/manager.py FrogPilot/selfdrive/manager/manager.py
|
||
33,34d32
|
||
< delete_deprecated_models()
|
||
<
|
||
39a38,43
|
||
> delete_deprecated_models()
|
||
> except subprocess.CalledProcessError as e:
|
||
> print(f"Failed to delete deprecated models. Error: {e}")
|
||
> return
|
||
>
|
||
> try:
|
||
151a156,158
|
||
> ("FrogPilotDrives", "0"),
|
||
> ("FrogPilotKilometers", "0"),
|
||
> ("FrogPilotMinutes", "0"),
|
||
172c179
|
||
< ("LaneLinesWidth", "2"),
|
||
---
|
||
> ("LaneLinesWidth", "4"),
|
||
182,186c189,193
|
||
< ("kiV1", "0.60"),
|
||
< ("kiV2", "0.45"),
|
||
< ("kiV3", "0.30"),
|
||
< ("kiV4", "0.15"),
|
||
< ("kpV1", "1.50"),
|
||
---
|
||
> ("kiV1", "0.35"),
|
||
> ("kiV2", "0.25"),
|
||
> ("kiV3", "0.20"),
|
||
> ("kiV4", "0.10"),
|
||
> ("kpV1", "1.30"),
|
||
188,189c195,196
|
||
< ("kpV3", "0.75"),
|
||
< ("kpV4", "0.50"),
|
||
---
|
||
> ("kpV3", "0.8"),
|
||
> ("kpV4", "0.8"),
|
||
198c205
|
||
< ("ModelSelector", "1"),
|
||
---
|
||
> ("ModelSelector", "0"),
|
||
344,351c351,358
|
||
< # sentry.init(sentry.SentryProject.SELFDRIVE)
|
||
< # cloudlog.bind_global(dongle_id=dongle_id,
|
||
< # version=get_version(),
|
||
< # origin=get_normalized_origin(),
|
||
< # branch=get_short_branch(),
|
||
< # commit=get_commit(),
|
||
< # dirty=is_dirty(),
|
||
< # device=HARDWARE.get_device_type())
|
||
---
|
||
> sentry.init(sentry.SentryProject.SELFDRIVE)
|
||
> cloudlog.bind_global(dongle_id=dongle_id,
|
||
> version=get_version(),
|
||
> origin=get_normalized_origin(),
|
||
> branch=get_short_branch(),
|
||
> commit=get_commit(),
|
||
> dirty=is_dirty(),
|
||
> device=HARDWARE.get_device_type())
|
||
370c377
|
||
< def manager_thread(frogpilot_functions) -> None:
|
||
---
|
||
> def manager_thread() -> None:
|
||
396,399d402
|
||
< openpilot_crashed = os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt'))
|
||
< if openpilot_crashed:
|
||
< frogpilot_functions.delete_logs()
|
||
<
|
||
405,406c408,410
|
||
< if openpilot_crashed:
|
||
< os.remove(os.path.join(sentry.CRASHES_DIR, 'error.txt'))
|
||
---
|
||
> error_log = os.path.join(sentry.CRASHES_DIR, 'error.txt')
|
||
> if os.path.isfile(error_log):
|
||
> os.remove(error_log)
|
||
432c436
|
||
< for param in ("DoUninstall", "DoShutdown", "DoReboot", "DoSoftReboot"):
|
||
---
|
||
> for param in ("DoUninstall", "DoShutdown", "DoReboot"):
|
||
459c463
|
||
< manager_thread(frogpilot_functions)
|
||
---
|
||
> manager_thread()
|
||
473,475d476
|
||
< elif params.get_bool("DoSoftReboot"):
|
||
< cloudlog.warning("softreboot")
|
||
< HARDWARE.soft_reboot()
|
||
diff -r clearpilot/selfdrive/manager/process_config.py FrogPilot/selfdrive/manager/process_config.py
|
||
107c107
|
||
< managed_processes = {p.name: p for p in procs}
|
||
\ No newline at end of file
|
||
---
|
||
> managed_processes = {p.name: p for p in procs}
|
||
diff -r clearpilot/selfdrive/modeld/modeld.py FrogPilot/selfdrive/modeld/modeld.py
|
||
27c27
|
||
< from openpilot.selfdrive.frogpilot.controls.lib.model_manager import DEFAULT_MODEL, MODELS_PATH, NAVIGATIONLESS_MODELS, RADARLESS_MODELS
|
||
---
|
||
> from openpilot.selfdrive.frogpilot.controls.lib.model_manager import DEFAULT_MODEL, MODELS_PATH, NAVIGATION_MODELS, RADARLESS_MODELS
|
||
32c32
|
||
< MODEL_NAME = Params().get("Model", encoding='utf-8')
|
||
---
|
||
> MODEL_NAME = Params().get("Model", block=True, encoding='utf-8')
|
||
34c34
|
||
< DISABLE_NAV = MODEL_NAME in NAVIGATIONLESS_MODELS
|
||
---
|
||
> DISABLE_NAV = MODEL_NAME not in NAVIGATION_MODELS
|
||
38c38
|
||
< ModelRunner.THNEED: Path(__file__).parent / ('models/supercombo.thneed' if MODEL_NAME == DEFAULT_MODEL else f'{MODELS_PATH}/{MODEL_NAME}.thneed'),
|
||
---
|
||
> ModelRunner.THNEED: Path(__file__).parent / ('models/supercombo.thneed' if MODEL_NAME == DEFAULT_MODEL or not Params().get_bool("ModelSelector") else f'{MODELS_PATH}/{MODEL_NAME}.thneed'),
|
||
diff -r clearpilot/selfdrive/monitoring/driver_monitor.py FrogPilot/selfdrive/monitoring/driver_monitor.py
|
||
22,38c22,27
|
||
< # self._AWARENESS_TIME = 30. # passive wheeltouch total timeout
|
||
< # self._AWARENESS_PRE_TIME_TILL_TERMINAL = 15.
|
||
< # self._AWARENESS_PROMPT_TIME_TILL_TERMINAL = 6.
|
||
< # self._DISTRACTED_TIME = 11. # active monitoring total timeout
|
||
< # self._DISTRACTED_PRE_TIME_TILL_TERMINAL = 8.
|
||
< # self._DISTRACTED_PROMPT_TIME_TILL_TERMINAL = 6.
|
||
<
|
||
< # Temp.
|
||
< # Goals:
|
||
< # - Temp only if daytime and privledged
|
||
< # - Continuously lower speed if in crit state
|
||
< self._AWARENESS_TIME = 50. # passive wheeltouch total timeout
|
||
< self._AWARENESS_PRE_TIME_TILL_TERMINAL = 30.
|
||
< self._AWARENESS_PROMPT_TIME_TILL_TERMINAL = 10.
|
||
< self._DISTRACTED_TIME = 50. # active monitoring total timeout
|
||
< self._DISTRACTED_PRE_TIME_TILL_TERMINAL = 30.
|
||
< self._DISTRACTED_PROMPT_TIME_TILL_TERMINAL = 10.
|
||
---
|
||
> self._AWARENESS_TIME = 30. # passive wheeltouch total timeout
|
||
> self._AWARENESS_PRE_TIME_TILL_TERMINAL = 15.
|
||
> self._AWARENESS_PROMPT_TIME_TILL_TERMINAL = 6.
|
||
> self._DISTRACTED_TIME = 11. # active monitoring total timeout
|
||
> self._DISTRACTED_PRE_TIME_TILL_TERMINAL = 8.
|
||
> self._DISTRACTED_PROMPT_TIME_TILL_TERMINAL = 6.
|
||
316,317c305
|
||
< # self.awareness > 0
|
||
< if (driver_engaged and not self.active_monitoring_mode) or not ctrl_active: # reset only when on disengagement if red reached
|
||
---
|
||
> if (driver_engaged and self.awareness > 0 and not self.active_monitoring_mode) or not ctrl_active: # reset only when on disengagement if red reached
|
||
324,325c312
|
||
< # and self.awareness > 0
|
||
< if (driver_attentive and self.face_detected and self.pose.low_std ):
|
||
---
|
||
> if (driver_attentive and self.face_detected and self.pose.low_std and self.awareness > 0):
|
||
349,354c336,340
|
||
< alert = EventName.driverDistracted if self.active_monitoring_mode else EventName.driverUnresponsive
|
||
< # self.terminal_time += 1
|
||
< # if awareness_prev > 0.:
|
||
< # self.terminal_alert_cnt += 1
|
||
< # elif self.awareness <= self.threshold_prompt:
|
||
< if self.awareness <= self.threshold_prompt:
|
||
---
|
||
> alert = EventName.driverDistracted if self.active_monitoring_mode else EventName.driverUnresponsive
|
||
> self.terminal_time += 1
|
||
> if awareness_prev > 0.:
|
||
> self.terminal_alert_cnt += 1
|
||
> elif self.awareness <= self.threshold_prompt:
|
||
diff -r clearpilot/selfdrive/sentry.py FrogPilot/selfdrive/sentry.py
|
||
29,31d28
|
||
< # CLEARPILOT disabled
|
||
< return False
|
||
<
|
||
44,46d40
|
||
< # CLEARPILOT disabled
|
||
< return
|
||
<
|
||
96,98d89
|
||
< # CLEARPILOT disabled
|
||
< return
|
||
<
|
||
158,160d148
|
||
< # CLEARPILOT disabled
|
||
< return
|
||
<
|
||
201,203d188
|
||
< # CLEARPILOT disabled
|
||
< return
|
||
<
|
||
diff -r clearpilot/selfdrive/ui/qt/home.cc FrogPilot/selfdrive/ui/qt/home.cc
|
||
12d11
|
||
< #include "system/hardware/hw.h"
|
||
21,23d19
|
||
< // CLEARPILOT Sidebar set to invisible in drive view.
|
||
< params.putBool("Sidebar", false);
|
||
<
|
||
46,50d41
|
||
< // CLEARPILOT
|
||
< // show_ready = true;
|
||
< ready = new ReadyWindow(this);
|
||
< slayout->addWidget(ready);
|
||
<
|
||
56d46
|
||
<
|
||
58d47
|
||
<
|
||
73c62
|
||
< // const SubMaster &sm = *(s.sm);
|
||
---
|
||
> const SubMaster &sm = *(s.sm);
|
||
75d63
|
||
< // CLEARPILOT
|
||
77,80c65,68
|
||
< // if (onroad->isVisible() && !body->isEnabled() && sm["carParams"].getCarParams().getNotCar()) {
|
||
< // body->setEnabled(true);
|
||
< // slayout->setCurrentWidget(body);
|
||
< // }
|
||
---
|
||
> if (onroad->isVisible() && !body->isEnabled() && sm["carParams"].getCarParams().getNotCar()) {
|
||
> body->setEnabled(true);
|
||
> slayout->setCurrentWidget(body);
|
||
> }
|
||
88a77
|
||
> sidebar->setVisible(offroad);
|
||
90,92c79
|
||
< sidebar->setVisible(false);
|
||
< slayout->setCurrentWidget(ready);
|
||
< // this->showDriverView(true, true); // Temp
|
||
---
|
||
> slayout->setCurrentWidget(home);
|
||
94d80
|
||
< sidebar->setVisible(false);
|
||
117,119d102
|
||
< // CLEARPILOT todo - tap on main goes straight to settings
|
||
< // Unless we click a debug widget.
|
||
<
|
||
121,135c104,107
|
||
< // if ((onroad->isVisible() || body->isVisible()) && (!sidebar->isVisible() || e->x() > sidebar->width())) {
|
||
< // sidebar->setVisible(!sidebar->isVisible() && !onroad->isMapVisible());
|
||
< // uiState()->scene.map_open = onroad->isMapVisible();
|
||
< // params.putBool("Sidebar", sidebar->isVisible());
|
||
< // }
|
||
<
|
||
< // CLEARPILOT - click ready shows home
|
||
< if (!onroad->isVisible() && ready->isVisible()) {
|
||
< sidebar->setVisible(true);
|
||
< slayout->setCurrentWidget(home);
|
||
< }
|
||
<
|
||
< // Todo: widgets
|
||
< if (onroad->isVisible()) {
|
||
< emit openSettings();
|
||
---
|
||
> if ((onroad->isVisible() || body->isVisible()) && (!sidebar->isVisible() || e->x() > sidebar->width())) {
|
||
> sidebar->setVisible(!sidebar->isVisible() && !onroad->isMapVisible());
|
||
> uiState()->scene.map_open = onroad->isMapVisible();
|
||
> params.putBool("Sidebar", sidebar->isVisible());
|
||
219,220d190
|
||
< // CLEARPILOT TEMP
|
||
< // QObject::connect(experimental_mode, &ExperimentalModeButton::openSettings, this, &OffroadHome::openSettings);
|
||
267,270c237
|
||
< // CLEARPILOT changed timeout to 2 min
|
||
< // What does this even do?
|
||
< timer->start(120 * 1000);
|
||
< // slayout->addWidget(ready);
|
||
---
|
||
> timer->start(10 * 1000);
|
||
287d253
|
||
< // CLEARPILOT temp disabled update notifications
|
||
289c255
|
||
< if (!updateAvailable && !alerts && false) {
|
||
---
|
||
> if (!updateAvailable && !alerts) {
|
||
298,302c264,265
|
||
< // CLEARPILOT temp disabled update notifications
|
||
< // update_notif->setVisible(updateAvailable);
|
||
< // alert_notif->setVisible(alerts);
|
||
< update_notif->setVisible(false);
|
||
< alert_notif->setVisible(false);
|
||
---
|
||
> update_notif->setVisible(updateAvailable);
|
||
> alert_notif->setVisible(alerts);
|
||
diff -r clearpilot/selfdrive/ui/qt/home.h FrogPilot/selfdrive/ui/qt/home.h
|
||
13d12
|
||
< #include "selfdrive/ui/qt/ready.h"
|
||
53d51
|
||
< QWidget* _parent = 0;
|
||
79,82d76
|
||
<
|
||
< // CLEARPILOT
|
||
< // bool show_ready;
|
||
< ReadyWindow *ready;
|
||
diff -r clearpilot/selfdrive/ui/qt/offroad/settings.cc FrogPilot/selfdrive/ui/qt/offroad/settings.cc
|
||
324c324
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
340c340
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
350,351c350
|
||
< // CLEARPILOT - changed backups to /data/cp_backups
|
||
< QDir backupDir("/data/cp_backups");
|
||
---
|
||
> QDir backupDir("/data/backups");
|
||
428c427
|
||
< Hardware::soft_reboot();
|
||
---
|
||
> Hardware::reboot();
|
||
443,444c442
|
||
< // CLEARPILOT changed to cp_toggle_backups
|
||
< QDir backupDir("/data/cp_toggle_backups");
|
||
---
|
||
> QDir backupDir("/data/toggle_backups");
|
||
552,556d549
|
||
< QPushButton *softreboot_btn = new QPushButton(tr("Soft Reboot"));
|
||
< softreboot_btn->setObjectName("softreboot_btn");
|
||
< power_layout->addWidget(softreboot_btn);
|
||
< QObject::connect(softreboot_btn, &QPushButton::clicked, this, &DevicePanel::softreboot);
|
||
<
|
||
567,568d559
|
||
< #softreboot_btn { height: 120px; border-radius: 15px; background-color: #e2e22c; }
|
||
< #softreboot_btn:pressed { background-color: #ffe224; }
|
||
611,622d601
|
||
< }
|
||
< }
|
||
<
|
||
< void DevicePanel::softreboot() {
|
||
< if (!uiState()->engaged()) {
|
||
< if (ConfirmationDialog::confirm(tr("Are you sure you want to soft reboot?"), tr("Soft Reboot"), this)) {
|
||
< if (!uiState()->engaged()) {
|
||
< params.putBool("DoSoftReboot", true);
|
||
< }
|
||
< }
|
||
< } else {
|
||
< ConfirmationDialog::alert(tr("Disengage to Soft Reboot"), this);
|
||
diff -r clearpilot/selfdrive/ui/qt/offroad/settings.h FrogPilot/selfdrive/ui/qt/offroad/settings.h
|
||
67d66
|
||
< void softreboot();
|
||
diff -r clearpilot/selfdrive/ui/qt/offroad/software_settings.cc FrogPilot/selfdrive/ui/qt/offroad/software_settings.cc
|
||
35,36c35,36
|
||
< ParamControl *automaticUpdatesToggle = new ParamControl("AutomaticUpdates", tr(" Automatically Update ClearPilot"),
|
||
< tr("ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi."), "");
|
||
---
|
||
> ParamControl *automaticUpdatesToggle = new ParamControl("AutomaticUpdates", tr("Automatically Update FrogPilot"),
|
||
> tr("FrogPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi."), "");
|
||
diff -r clearpilot/selfdrive/ui/qt/onroad.cc FrogPilot/selfdrive/ui/qt/onroad.cc
|
||
122,191c122,191
|
||
< // // Change cruise control increments button
|
||
< // QRect maxSpeedRect(7, 25, 225, 225);
|
||
< // bool isMaxSpeedClicked = maxSpeedRect.contains(e->pos()) && scene.reverse_cruise_ui;
|
||
<
|
||
< // // Hide speed button
|
||
< // QRect hideSpeedRect(rect().center().x() - 175, 50, 350, 350);
|
||
< // bool isSpeedClicked = hideSpeedRect.contains(e->pos()) && scene.hide_speed_ui;
|
||
<
|
||
< // // Speed limit confirmation buttons
|
||
< // QSize size = this->size();
|
||
< // QRect leftRect(0, 0, size.width() / 2, size.height());
|
||
< // QRect rightRect = leftRect.translated(size.width() / 2, 0);
|
||
<
|
||
< // bool isLeftSideClicked = leftRect.contains(e->pos()) && scene.speed_limit_changed;
|
||
< // bool isRightSideClicked = rightRect.contains(e->pos()) && scene.speed_limit_changed;
|
||
<
|
||
< // // Speed limit offset button
|
||
< // QRect speedLimitRect(7, 250, 225, 225);
|
||
< // bool isSpeedLimitClicked = speedLimitRect.contains(e->pos()) && scene.show_slc_offset_ui;
|
||
<
|
||
< // if (isMaxSpeedClicked || isSpeedClicked || isSpeedLimitClicked) {
|
||
< // if (isMaxSpeedClicked) {
|
||
< // std::thread([this]() {
|
||
< // bool currentReverseCruise = scene.reverse_cruise;
|
||
<
|
||
< // uiState()->scene.reverse_cruise = !currentReverseCruise;
|
||
< // params.putBoolNonBlocking("ReverseCruise", !currentReverseCruise);
|
||
<
|
||
< // paramsMemory.putBool("FrogPilotTogglesUpdated", true);
|
||
< // std::this_thread::sleep_for(std::chrono::seconds(1));
|
||
< // paramsMemory.putBool("FrogPilotTogglesUpdated", false);
|
||
< // }).detach();
|
||
<
|
||
< // } else if (isSpeedClicked) {
|
||
< // bool currentHideSpeed = scene.hide_speed;
|
||
<
|
||
< // uiState()->scene.hide_speed = !currentHideSpeed;
|
||
< // params.putBoolNonBlocking("HideSpeed", !currentHideSpeed);
|
||
< // } else if (isSpeedLimitClicked) {
|
||
< // bool currentShowSLCOffset = scene.show_slc_offset;
|
||
<
|
||
< // scene.show_slc_offset = !currentShowSLCOffset;
|
||
< // params.putBoolNonBlocking("ShowSLCOffset", !currentShowSLCOffset);
|
||
< // }
|
||
<
|
||
< // widgetClicked = true;
|
||
< // } else if (isLeftSideClicked || isRightSideClicked) {
|
||
< // bool slcConfirmed = isLeftSideClicked && !scene.right_hand_drive || isRightSideClicked && scene.right_hand_drive;
|
||
< // paramsMemory.putBoolNonBlocking("SLCConfirmed", slcConfirmed);
|
||
< // paramsMemory.putBoolNonBlocking("SLCConfirmedPressed", true);
|
||
<
|
||
< // widgetClicked = true;
|
||
< // // If the click wasn't for anything specific, change the value of "ExperimentalMode"
|
||
< // } else if (scene.experimental_mode_via_screen && e->pos() != timeoutPoint) {
|
||
< // if (clickTimer.isActive()) {
|
||
< // clickTimer.stop();
|
||
<
|
||
< // if (scene.conditional_experimental) {
|
||
< // int override_value = (scene.conditional_status >= 1 && scene.conditional_status <= 6) ? 0 : scene.conditional_status >= 7 ? 5 : 6;
|
||
< // paramsMemory.putIntNonBlocking("CEStatus", override_value);
|
||
< // } else {
|
||
< // bool experimentalMode = params.getBool("ExperimentalMode");
|
||
< // params.putBoolNonBlocking("ExperimentalMode", !experimentalMode);
|
||
< // }
|
||
<
|
||
< // } else {
|
||
< // clickTimer.start(500);
|
||
< // }
|
||
< // widgetClicked = true;
|
||
< // }
|
||
---
|
||
> // Change cruise control increments button
|
||
> QRect maxSpeedRect(7, 25, 225, 225);
|
||
> bool isMaxSpeedClicked = maxSpeedRect.contains(e->pos()) && scene.reverse_cruise_ui;
|
||
>
|
||
> // Hide speed button
|
||
> QRect hideSpeedRect(rect().center().x() - 175, 50, 350, 350);
|
||
> bool isSpeedClicked = hideSpeedRect.contains(e->pos()) && scene.hide_speed_ui;
|
||
>
|
||
> // Speed limit confirmation buttons
|
||
> QSize size = this->size();
|
||
> QRect leftRect(0, 0, size.width() / 2, size.height());
|
||
> QRect rightRect = leftRect.translated(size.width() / 2, 0);
|
||
>
|
||
> bool isLeftSideClicked = leftRect.contains(e->pos()) && scene.speed_limit_changed;
|
||
> bool isRightSideClicked = rightRect.contains(e->pos()) && scene.speed_limit_changed;
|
||
>
|
||
> // Speed limit offset button
|
||
> QRect speedLimitRect(7, 250, 225, 225);
|
||
> bool isSpeedLimitClicked = speedLimitRect.contains(e->pos()) && scene.show_slc_offset_ui;
|
||
>
|
||
> if (isMaxSpeedClicked || isSpeedClicked || isSpeedLimitClicked) {
|
||
> if (isMaxSpeedClicked) {
|
||
> std::thread([this]() {
|
||
> bool currentReverseCruise = scene.reverse_cruise;
|
||
>
|
||
> uiState()->scene.reverse_cruise = !currentReverseCruise;
|
||
> params.putBoolNonBlocking("ReverseCruise", !currentReverseCruise);
|
||
>
|
||
> paramsMemory.putBool("FrogPilotTogglesUpdated", true);
|
||
> std::this_thread::sleep_for(std::chrono::seconds(1));
|
||
> paramsMemory.putBool("FrogPilotTogglesUpdated", false);
|
||
> }).detach();
|
||
>
|
||
> } else if (isSpeedClicked) {
|
||
> bool currentHideSpeed = scene.hide_speed;
|
||
>
|
||
> uiState()->scene.hide_speed = !currentHideSpeed;
|
||
> params.putBoolNonBlocking("HideSpeed", !currentHideSpeed);
|
||
> } else if (isSpeedLimitClicked) {
|
||
> bool currentShowSLCOffset = scene.show_slc_offset;
|
||
>
|
||
> scene.show_slc_offset = !currentShowSLCOffset;
|
||
> params.putBoolNonBlocking("ShowSLCOffset", !currentShowSLCOffset);
|
||
> }
|
||
>
|
||
> widgetClicked = true;
|
||
> } else if (isLeftSideClicked || isRightSideClicked) {
|
||
> bool slcConfirmed = isLeftSideClicked && !scene.right_hand_drive || isRightSideClicked && scene.right_hand_drive;
|
||
> paramsMemory.putBoolNonBlocking("SLCConfirmed", slcConfirmed);
|
||
> paramsMemory.putBoolNonBlocking("SLCConfirmedPressed", true);
|
||
>
|
||
> widgetClicked = true;
|
||
> // If the click wasn't for anything specific, change the value of "ExperimentalMode"
|
||
> } else if (scene.experimental_mode_via_screen && e->pos() != timeoutPoint) {
|
||
> if (clickTimer.isActive()) {
|
||
> clickTimer.stop();
|
||
>
|
||
> if (scene.conditional_experimental) {
|
||
> int override_value = (scene.conditional_status >= 1 && scene.conditional_status <= 6) ? 0 : scene.conditional_status >= 7 ? 5 : 6;
|
||
> paramsMemory.putIntNonBlocking("CEStatus", override_value);
|
||
> } else {
|
||
> bool experimentalMode = params.getBool("ExperimentalMode");
|
||
> params.putBoolNonBlocking("ExperimentalMode", !experimentalMode);
|
||
> }
|
||
>
|
||
> } else {
|
||
> clickTimer.start(500);
|
||
> }
|
||
> widgetClicked = true;
|
||
> }
|
||
301,302c301,302
|
||
< .arg(scene.acceleration_jerk_difference > 0 ? "-" : "", 0)
|
||
< .arg(abs(scene.acceleration_jerk_difference), 0, 'f', 3)
|
||
---
|
||
> .arg(scene.acceleration_jerk_difference > 0 ? "-" : "+", 0)
|
||
> .arg(scene.acceleration_jerk_difference, 0, 'f', 3)
|
||
304,305c304,305
|
||
< .arg(scene.ego_jerk_difference > 0 ? "-" : "", 0)
|
||
< .arg(abs(scene.ego_jerk_difference), 0, 'f', 3);
|
||
---
|
||
> .arg(scene.ego_jerk_difference > 0 ? "-" : "+", 0)
|
||
> .arg(scene.ego_jerk_difference, 0, 'f', 3);
|
||
438,439c438,439
|
||
< int override_value = (scene.conditional_status >= 1 && scene.conditional_status <= 4) ? 0 : scene.conditional_status >= 5 ? 5 : 6;
|
||
< paramsMemory.putIntNonBlocking("ConditionalStatus", override_value);
|
||
---
|
||
> int override_value = (scene.conditional_status >= 1 && scene.conditional_status <= 6) ? 0 : scene.conditional_status >= 7 ? 5 : 6;
|
||
> paramsMemory.putIntNonBlocking("CEStatus", override_value);
|
||
555,556c555
|
||
< recorder_btn->setVisible(false);
|
||
< // buttons_layout->addWidget(recorder_btn);
|
||
---
|
||
> buttons_layout->addWidget(recorder_btn);
|
||
559c558
|
||
< // buttons_layout->addWidget(experimental_btn);
|
||
---
|
||
> buttons_layout->addWidget(experimental_btn);
|
||
566c565
|
||
< // top_right_layout->addWidget(pedal_icons, 0, Qt::AlignRight);
|
||
---
|
||
> top_right_layout->addWidget(pedal_icons, 0, Qt::AlignRight);
|
||
620,621d618
|
||
< // CLEARPILOT
|
||
< experimental_btn->setVisible(false);
|
||
771,773c768
|
||
< // CLEARPILOT changes to 120 from ~176
|
||
< // Maybe we want to hide this?
|
||
< p.setFont(InterFont(140, QFont::Bold));
|
||
---
|
||
> p.setFont(InterFont(176, QFont::Bold));
|
||
775,776c770
|
||
< // CLEARPILOT changes to 40 from 66
|
||
< p.setFont(InterFont(50));
|
||
---
|
||
> p.setFont(InterFont(66));
|
||
826,836d819
|
||
< // CLEARPILOT: color channel code rewriten to allow custom colors
|
||
< // Center lane color
|
||
< // This should be moved to ui.h
|
||
< int base_red = 150;
|
||
< int base_green = 150;
|
||
< int base_blue = 150;
|
||
< float path_alpha = 0.30; // 60% opacity
|
||
< float other_alpha = 0.75; // 60% opacity
|
||
<
|
||
< QColor center_lane_color(base_red, base_green, base_blue);
|
||
<
|
||
841,845c824,828
|
||
< // if (currentHolidayTheme != 0) {
|
||
< // painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
< // } else if (customColors != 0) {
|
||
< // painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
< // } else {
|
||
---
|
||
> if (currentHolidayTheme != 0) {
|
||
> painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
> } else if (customColors != 0) {
|
||
> painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
> } else {
|
||
847c830
|
||
< // }
|
||
---
|
||
> }
|
||
853,857c836,840
|
||
< // if (currentHolidayTheme != 0) {
|
||
< // painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
< // } else if (customColors != 0) {
|
||
< // painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
< // } else {
|
||
---
|
||
> if (currentHolidayTheme != 0) {
|
||
> painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
> } else if (customColors != 0) {
|
||
> painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
> } else {
|
||
859c842
|
||
< // }
|
||
---
|
||
> }
|
||
877,881c860,872
|
||
< try {
|
||
< for (int i = 0; i < max_len; ++i) {
|
||
< if (scene.track_vertices[i].y() < 0 || scene.track_vertices[i].y() > height()) continue;
|
||
<
|
||
< float lin_grad_point = (height() - scene.track_vertices[i].y()) / height();
|
||
---
|
||
> for (int i = 0; i < max_len; ++i) {
|
||
> // Some points are out of frame
|
||
> if (scene.track_vertices[i].y() < 0 || scene.track_vertices[i].y() > height()) continue;
|
||
>
|
||
> // Flip so 0 is bottom of frame
|
||
> float lin_grad_point = (height() - scene.track_vertices[i].y()) / height();
|
||
>
|
||
> // If acceleration is between -0.25 and 0.25, resort to the theme color
|
||
> if (std::abs(acceleration[i]) < 0.25 && (currentHolidayTheme != 0)) {
|
||
> const auto &colorMap = std::get<2>(holidayThemeConfiguration[currentHolidayTheme]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> bg.setColorAt(position, brush.color());
|
||
> }
|
||
883,884c874,878
|
||
< double _h, _s, _l; // Use double for compatibility with QColor::getHslF()
|
||
< center_lane_color.getHslF(&_h, &_s, &_l);
|
||
---
|
||
> } else if (std::abs(acceleration[i]) < 0.25 && (customColors != 0)) {
|
||
> const auto &colorMap = std::get<2>(themeConfiguration[customColors]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> bg.setColorAt(position, brush.color());
|
||
> }
|
||
886,888c880,889
|
||
< // Calculate saturation and lightness based on acceleration
|
||
< float adjusted_saturation = std::min(std::abs(acceleration[i] * 1.5f), 1.f);
|
||
< float adjusted_lightness = util::map_val(adjusted_saturation, 0.f, 1.f, static_cast<float>(_l), 0.95f); // Using base lightness as a starting point
|
||
---
|
||
> } else {
|
||
> // speed up: 120, slow down: 0
|
||
> float path_hue = fmax(fmin(60 + acceleration[i] * 35, 120), 0);
|
||
> // FIXME: painter.drawPolygon can be slow if hue is not rounded
|
||
> path_hue = int(path_hue * 100 + 0.5) / 100;
|
||
>
|
||
> float saturation = fmin(fabs(acceleration[i] * 1.5), 1);
|
||
> float lightness = util::map_val(saturation, 0.0f, 1.0f, 0.95f, 0.62f); // lighter when grey
|
||
> float alpha = util::map_val(lin_grad_point, 0.75f / 2.f, 0.75f, 0.4f, 0.0f); // matches previous alpha fade
|
||
> bg.setColorAt(lin_grad_point, QColor::fromHslF(path_hue / 360., saturation, lightness, alpha));
|
||
890,891c891,894
|
||
< // Calculate dynamic alpha based on lin_grad_point
|
||
< float dynamic_alpha = util::map_val(lin_grad_point, 0.75f / 2.f, 0.75f, path_alpha, 0.f);
|
||
---
|
||
> // Skip a point, unless next is last
|
||
> i += (i + 2) < max_len ? 1 : 0;
|
||
> }
|
||
> }
|
||
893,894c896,900
|
||
< QColor final_color = QColor::fromHslF(static_cast<float>(_h / 360.f), adjusted_saturation, adjusted_lightness, dynamic_alpha);
|
||
< bg.setColorAt(lin_grad_point, final_color);
|
||
---
|
||
> } else if (currentHolidayTheme != 0) {
|
||
> const auto &colorMap = std::get<2>(holidayThemeConfiguration[currentHolidayTheme]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> bg.setColorAt(position, brush.color());
|
||
> }
|
||
896,903c902,905
|
||
< i += (i + 2) < max_len ? 1 : 0; // Skipping a point to optimize rendering
|
||
< }
|
||
< } catch (const std::exception& e) {
|
||
< // Default shading if for some reason the above code fails
|
||
< bg = QLinearGradient(0, height(), 0, 0);
|
||
< bg.setColorAt(0.0, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.4)));
|
||
< bg.setColorAt(0.5, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.35)));
|
||
< bg.setColorAt(1.0, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.0)));
|
||
---
|
||
> } else if (customColors != 0) {
|
||
> const auto &colorMap = std::get<2>(themeConfiguration[customColors]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> bg.setColorAt(position, brush.color());
|
||
904a907
|
||
>
|
||
906,908c909,911
|
||
< bg.setColorAt(0.0, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.4)));
|
||
< bg.setColorAt(0.5, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.35)));
|
||
< bg.setColorAt(1.0, QColor(center_lane_color.red(), center_lane_color.green(), center_lane_color.blue(), static_cast<int>(other_alpha * 255 * 0.0)));
|
||
---
|
||
> bg.setColorAt(0.0, QColor::fromHslF(148 / 360., 0.94, 0.51, 0.4));
|
||
> bg.setColorAt(0.5, QColor::fromHslF(112 / 360., 1.0, 0.68, 0.35));
|
||
> bg.setColorAt(1.0, QColor::fromHslF(112 / 360., 1.0, 0.68, 0.0));
|
||
917,925c920,930
|
||
< QColor color = bg_colors[STATUS_ALWAYS_ON_LATERAL_ACTIVE];
|
||
< pe.setColorAt(0.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255)));
|
||
< pe.setColorAt(0.5, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.5)));
|
||
< pe.setColorAt(1.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.1)));
|
||
< } else if (conditionalStatus == 1 || conditionalStatus == 3 || conditionalStatus == 5 || experimentalMode) {
|
||
< QColor color = bg_colors[STATUS_EXPERIMENTAL_ACTIVE];
|
||
< pe.setColorAt(0.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255)));
|
||
< pe.setColorAt(0.5, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.5)));
|
||
< pe.setColorAt(1.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.1)));
|
||
---
|
||
> pe.setColorAt(0.0, QColor::fromHslF(178 / 360., 0.90, 0.38, 1.0));
|
||
> pe.setColorAt(0.5, QColor::fromHslF(178 / 360., 0.90, 0.38, 0.5));
|
||
> pe.setColorAt(1.0, QColor::fromHslF(178 / 360., 0.90, 0.38, 0.1));
|
||
> } else if (conditionalStatus == 1 || conditionalStatus == 3 || conditionalStatus == 5) {
|
||
> pe.setColorAt(0.0, QColor::fromHslF(58 / 360., 1.00, 0.50, 1.0));
|
||
> pe.setColorAt(0.5, QColor::fromHslF(58 / 360., 1.00, 0.50, 0.5));
|
||
> pe.setColorAt(1.0, QColor::fromHslF(58 / 360., 1.00, 0.50, 0.1));
|
||
> } else if (experimentalMode) {
|
||
> pe.setColorAt(0.0, QColor::fromHslF(25 / 360., 0.71, 0.50, 1.0));
|
||
> pe.setColorAt(0.5, QColor::fromHslF(25 / 360., 0.71, 0.50, 0.5));
|
||
> pe.setColorAt(1.0, QColor::fromHslF(25 / 360., 0.71, 0.50, 0.1));
|
||
933a939,950
|
||
> } else if (currentHolidayTheme != 0) {
|
||
> const auto &colorMap = std::get<2>(holidayThemeConfiguration[currentHolidayTheme]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> QColor darkerColor = brush.color().darker(120);
|
||
> pe.setColorAt(position, darkerColor);
|
||
> }
|
||
> } else if (customColors != 0) {
|
||
> const auto &colorMap = std::get<2>(themeConfiguration[customColors]);
|
||
> for (const auto &[position, brush] : colorMap) {
|
||
> QColor darkerColor = brush.color().darker(120);
|
||
> pe.setColorAt(position, darkerColor);
|
||
> }
|
||
935,938c952,954
|
||
< QColor color = bg_colors[STATUS_ENGAGED];
|
||
< pe.setColorAt(0.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255)));
|
||
< pe.setColorAt(0.5, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.5)));
|
||
< pe.setColorAt(1.0, QColor(color.red(), color.green(), color.blue(), static_cast<int>(other_alpha * 255 * 0.1)));
|
||
---
|
||
> pe.setColorAt(0.0, QColor::fromHslF(148 / 360., 0.94, 0.51, 1.0));
|
||
> pe.setColorAt(0.5, QColor::fromHslF(112 / 360., 1.00, 0.68, 0.5));
|
||
> pe.setColorAt(1.0, QColor::fromHslF(112 / 360., 1.00, 0.68, 0.1));
|
||
1004c1020
|
||
< // painter.save();
|
||
---
|
||
> painter.save();
|
||
1006,1039c1022,1055
|
||
< // // base icon
|
||
< // int offset = UI_BORDER_SIZE + btn_size / 2;
|
||
< // int x = rightHandDM ? width() - offset : offset;
|
||
< // x += onroadDistanceButton ? 250 : 0;
|
||
< // offset += showAlwaysOnLateralStatusBar || showConditionalExperimentalStatusBar || roadNameUI ? 25 : 0;
|
||
< // int y = height() - offset;
|
||
< // float opacity = dmActive ? 0.65 : 0.2;
|
||
< // drawIcon(painter, QPoint(x, y), dm_img, blackColor(70), opacity);
|
||
<
|
||
< // // face
|
||
< // QPointF face_kpts_draw[std::size(default_face_kpts_3d)];
|
||
< // float kp;
|
||
< // for (int i = 0; i < std::size(default_face_kpts_3d); ++i) {
|
||
< // kp = (scene.face_kpts_draw[i].v[2] - 8) / 120 + 1.0;
|
||
< // face_kpts_draw[i] = QPointF(scene.face_kpts_draw[i].v[0] * kp + x, scene.face_kpts_draw[i].v[1] * kp + y);
|
||
< // }
|
||
<
|
||
< // painter.setPen(QPen(QColor::fromRgbF(1.0, 1.0, 1.0, opacity), 5.2, Qt::SolidLine, Qt::RoundCap));
|
||
< // painter.drawPolyline(face_kpts_draw, std::size(default_face_kpts_3d));
|
||
<
|
||
< // // tracking arcs
|
||
< // const int arc_l = 133;
|
||
< // const float arc_t_default = 6.7;
|
||
< // const float arc_t_extend = 12.0;
|
||
< // QColor arc_color = QColor::fromRgbF(0.545 - 0.445 * s->engaged(),
|
||
< // 0.545 + 0.4 * s->engaged(),
|
||
< // 0.545 - 0.285 * s->engaged(),
|
||
< // 0.4 * (1.0 - dm_fade_state));
|
||
< // float delta_x = -scene.driver_pose_sins[1] * arc_l / 2;
|
||
< // float delta_y = -scene.driver_pose_sins[0] * arc_l / 2;
|
||
< // painter.setPen(QPen(arc_color, arc_t_default+arc_t_extend*fmin(1.0, scene.driver_pose_diff[1] * 5.0), Qt::SolidLine, Qt::RoundCap));
|
||
< // painter.drawArc(QRectF(std::fmin(x + delta_x, x), y - arc_l / 2, fabs(delta_x), arc_l), (scene.driver_pose_sins[1]>0 ? 90 : -90) * 16, 180 * 16);
|
||
< // painter.setPen(QPen(arc_color, arc_t_default+arc_t_extend*fmin(1.0, scene.driver_pose_diff[0] * 5.0), Qt::SolidLine, Qt::RoundCap));
|
||
< // painter.drawArc(QRectF(x - arc_l / 2, std::fmin(y + delta_y, y), arc_l, fabs(delta_y)), (scene.driver_pose_sins[0]>0 ? 0 : 180) * 16, 180 * 16);
|
||
---
|
||
> // base icon
|
||
> int offset = UI_BORDER_SIZE + btn_size / 2;
|
||
> int x = rightHandDM ? width() - offset : offset;
|
||
> x += onroadDistanceButton ? 250 : 0;
|
||
> offset += showAlwaysOnLateralStatusBar || showConditionalExperimentalStatusBar || roadNameUI ? 25 : 0;
|
||
> int y = height() - offset;
|
||
> float opacity = dmActive ? 0.65 : 0.2;
|
||
> drawIcon(painter, QPoint(x, y), dm_img, blackColor(70), opacity);
|
||
>
|
||
> // face
|
||
> QPointF face_kpts_draw[std::size(default_face_kpts_3d)];
|
||
> float kp;
|
||
> for (int i = 0; i < std::size(default_face_kpts_3d); ++i) {
|
||
> kp = (scene.face_kpts_draw[i].v[2] - 8) / 120 + 1.0;
|
||
> face_kpts_draw[i] = QPointF(scene.face_kpts_draw[i].v[0] * kp + x, scene.face_kpts_draw[i].v[1] * kp + y);
|
||
> }
|
||
>
|
||
> painter.setPen(QPen(QColor::fromRgbF(1.0, 1.0, 1.0, opacity), 5.2, Qt::SolidLine, Qt::RoundCap));
|
||
> painter.drawPolyline(face_kpts_draw, std::size(default_face_kpts_3d));
|
||
>
|
||
> // tracking arcs
|
||
> const int arc_l = 133;
|
||
> const float arc_t_default = 6.7;
|
||
> const float arc_t_extend = 12.0;
|
||
> QColor arc_color = QColor::fromRgbF(0.545 - 0.445 * s->engaged(),
|
||
> 0.545 + 0.4 * s->engaged(),
|
||
> 0.545 - 0.285 * s->engaged(),
|
||
> 0.4 * (1.0 - dm_fade_state));
|
||
> float delta_x = -scene.driver_pose_sins[1] * arc_l / 2;
|
||
> float delta_y = -scene.driver_pose_sins[0] * arc_l / 2;
|
||
> painter.setPen(QPen(arc_color, arc_t_default+arc_t_extend*fmin(1.0, scene.driver_pose_diff[1] * 5.0), Qt::SolidLine, Qt::RoundCap));
|
||
> painter.drawArc(QRectF(std::fmin(x + delta_x, x), y - arc_l / 2, fabs(delta_x), arc_l), (scene.driver_pose_sins[1]>0 ? 90 : -90) * 16, 180 * 16);
|
||
> painter.setPen(QPen(arc_color, arc_t_default+arc_t_extend*fmin(1.0, scene.driver_pose_diff[0] * 5.0), Qt::SolidLine, Qt::RoundCap));
|
||
> painter.drawArc(QRectF(x - arc_l / 2, std::fmin(y + delta_y, y), arc_l, fabs(delta_y)), (scene.driver_pose_sins[0]>0 ? 0 : 180) * 16, 180 * 16);
|
||
1041c1057
|
||
< // painter.restore();
|
||
---
|
||
> painter.restore();
|
||
1074,1079c1090,1094
|
||
< // CLEARPILOT disabling custom theme colors
|
||
< // if (currentHolidayTheme != 0) {
|
||
< // painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
< // } else if (customColors != 0) {
|
||
< // painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
< // } else {
|
||
---
|
||
> if (currentHolidayTheme != 0) {
|
||
> painter.setBrush(std::get<2>(holidayThemeConfiguration[currentHolidayTheme]).begin()->second);
|
||
> } else if (customColors != 0) {
|
||
> painter.setBrush(std::get<2>(themeConfiguration[customColors]).begin()->second);
|
||
> } else {
|
||
1081c1096
|
||
< // }
|
||
---
|
||
> }
|
||
1169c1184
|
||
< if (s->scene.longitudinal_control && sm.rcv_frame("modelV2") > s->scene.started_frame) {
|
||
---
|
||
> if (s->scene.longitudinal_control && sm.rcv_frame("modelV2") > s->scene.started_frame && !s->scene.hide_lead_marker) {
|
||
1218c1233
|
||
< // bottom_layout->addWidget(distance_btn);
|
||
---
|
||
> bottom_layout->addWidget(distance_btn);
|
||
1220,1221c1235,1236
|
||
< // QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||
< // bottom_layout->addItem(spacer);
|
||
---
|
||
> QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||
> bottom_layout->addItem(spacer);
|
||
1224c1239
|
||
< // bottom_layout->addWidget(compass_img);
|
||
---
|
||
> bottom_layout->addWidget(compass_img);
|
||
1285,1291c1300,1306
|
||
< // QTimer *record_timer = new QTimer(this);
|
||
< // connect(record_timer, &QTimer::timeout, this, [this]() {
|
||
< // if (recorder_btn) {
|
||
< // recorder_btn->update_screen();
|
||
< // }
|
||
< // });
|
||
< // record_timer->start(1000 / UI_FREQ);
|
||
---
|
||
> QTimer *record_timer = new QTimer(this);
|
||
> connect(record_timer, &QTimer::timeout, this, [this]() {
|
||
> if (recorder_btn) {
|
||
> recorder_btn->update_screen();
|
||
> }
|
||
> });
|
||
> record_timer->start(1000 / UI_FREQ);
|
||
1316c1331
|
||
< // experimentalMode = scene.experimental_mode;
|
||
---
|
||
> experimentalMode = scene.experimental_mode;
|
||
1387,1394c1402,1409
|
||
< // if (customSignals != 0 && (turnSignalLeft || turnSignalRight) && !bigMapOpen) {
|
||
< // if (!animationTimer->isActive()) {
|
||
< // animationTimer->start(totalFrames * 11); // 440 milliseconds per loop; syncs up perfectly with my 2019 Lexus ES 350 turn signal clicks
|
||
< // }
|
||
< // drawTurnSignals(p);
|
||
< // } else if (animationTimer->isActive()) {
|
||
< // animationTimer->stop();
|
||
< // }
|
||
---
|
||
> if (customSignals != 0 && (turnSignalLeft || turnSignalRight) && !bigMapOpen) {
|
||
> if (!animationTimer->isActive()) {
|
||
> animationTimer->start(totalFrames * 11); // 440 milliseconds per loop; syncs up perfectly with my 2019 Lexus ES 350 turn signal clicks
|
||
> }
|
||
> drawTurnSignals(p);
|
||
> } else if (animationTimer->isActive()) {
|
||
> animationTimer->stop();
|
||
> }
|
||
1404,1422c1419,1437
|
||
< // bool enableCompass = compass && !hideBottomIcons;
|
||
< // compass_img->setVisible(enableCompass);
|
||
< // if (enableCompass) {
|
||
< // compass_img->updateState();
|
||
< // bottom_layout->setAlignment(compass_img, (rightHandDM ? Qt::AlignLeft : Qt::AlignRight));
|
||
< // }
|
||
<
|
||
< // bool enableDistanceButton = onroadDistanceButton && !hideBottomIcons;
|
||
< // distance_btn->setVisible(enableDistanceButton);
|
||
< // if (enableDistanceButton) {
|
||
< // distance_btn->updateState();
|
||
< // bottom_layout->setAlignment(distance_btn, (rightHandDM ? Qt::AlignRight : Qt::AlignLeft));
|
||
< // }
|
||
<
|
||
< // bool enablePedalIcons = scene.pedals_on_ui && !bigMapOpen;
|
||
< // pedal_icons->setVisible(enablePedalIcons);
|
||
< // if (enablePedalIcons) {
|
||
< // pedal_icons->updateState();
|
||
< // }
|
||
---
|
||
> bool enableCompass = compass && !hideBottomIcons;
|
||
> compass_img->setVisible(enableCompass);
|
||
> if (enableCompass) {
|
||
> compass_img->updateState();
|
||
> bottom_layout->setAlignment(compass_img, (rightHandDM ? Qt::AlignLeft : Qt::AlignRight));
|
||
> }
|
||
>
|
||
> bool enableDistanceButton = onroadDistanceButton && !hideBottomIcons;
|
||
> distance_btn->setVisible(enableDistanceButton);
|
||
> if (enableDistanceButton) {
|
||
> distance_btn->updateState();
|
||
> bottom_layout->setAlignment(distance_btn, (rightHandDM ? Qt::AlignRight : Qt::AlignLeft));
|
||
> }
|
||
>
|
||
> bool enablePedalIcons = scene.pedals_on_ui && !bigMapOpen;
|
||
> pedal_icons->setVisible(enablePedalIcons);
|
||
> if (enablePedalIcons) {
|
||
> pedal_icons->updateState();
|
||
> }
|
||
1430,1431c1445
|
||
< // recorder_btn->setVisible(scene.screen_recorder && !mapOpen);
|
||
< recorder_btn->setVisible(false);
|
||
---
|
||
> recorder_btn->setVisible(scene.screen_recorder && !mapOpen);
|
||
1435c1449
|
||
< // setFixedSize(btn_size * 1.5, btn_size * 1.5);
|
||
---
|
||
> setFixedSize(btn_size * 1.5, btn_size * 1.5);
|
||
1437,1440c1451,1454
|
||
< // compassSize = btn_size;
|
||
< // circleOffset = compassSize / 2;
|
||
< // degreeLabelOffset = circleOffset + 25;
|
||
< // innerCompass = compassSize / 2;
|
||
---
|
||
> compassSize = btn_size;
|
||
> circleOffset = compassSize / 2;
|
||
> degreeLabelOffset = circleOffset + 25;
|
||
> innerCompass = compassSize / 2;
|
||
1442,1443c1456,1457
|
||
< // x = (btn_size * 1.5) / 2 + 20;
|
||
< // y = (btn_size * 1.5) / 2;
|
||
---
|
||
> x = (btn_size * 1.5) / 2 + 20;
|
||
> y = (btn_size * 1.5) / 2;
|
||
1445c1459
|
||
< // compassInnerImg = loadPixmap("../frogpilot/assets/other_images/compass_inner.png", QSize(compassSize / 1.75, compassSize / 1.75));
|
||
---
|
||
> compassInnerImg = loadPixmap("../frogpilot/assets/other_images/compass_inner.png", QSize(compassSize / 1.75, compassSize / 1.75));
|
||
1447,1449c1461,1463
|
||
< // staticElements = QPixmap(size());
|
||
< // staticElements.fill(Qt::transparent);
|
||
< // QPainter p(&staticElements);
|
||
---
|
||
> staticElements = QPixmap(size());
|
||
> staticElements.fill(Qt::transparent);
|
||
> QPainter p(&staticElements);
|
||
1451c1465
|
||
< // p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
---
|
||
> p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
1453,1454c1467,1468
|
||
< // QPen whitePen(Qt::white, 2);
|
||
< // p.setPen(whitePen);
|
||
---
|
||
> QPen whitePen(Qt::white, 2);
|
||
> p.setPen(whitePen);
|
||
1456,1458c1470,1472
|
||
< // p.setOpacity(1.0);
|
||
< // p.setBrush(QColor(0, 0, 0, 100));
|
||
< // p.drawEllipse(x - circleOffset, y - circleOffset, circleOffset * 2, circleOffset * 2);
|
||
---
|
||
> p.setOpacity(1.0);
|
||
> p.setBrush(QColor(0, 0, 0, 100));
|
||
> p.drawEllipse(x - circleOffset, y - circleOffset, circleOffset * 2, circleOffset * 2);
|
||
1460,1462c1474,1476
|
||
< // p.setBrush(Qt::NoBrush);
|
||
< // p.drawEllipse(x - (innerCompass + 5), y - (innerCompass + 5), (innerCompass + 5) * 2, (innerCompass + 5) * 2);
|
||
< // p.drawEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2);
|
||
---
|
||
> p.setBrush(Qt::NoBrush);
|
||
> p.drawEllipse(x - (innerCompass + 5), y - (innerCompass + 5), (innerCompass + 5) * 2, (innerCompass + 5) * 2);
|
||
> p.drawEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2);
|
||
1464,1467c1478,1481
|
||
< // QPainterPath outerCircle, innerCircle;
|
||
< // outerCircle.addEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2);
|
||
< // innerCircle.addEllipse(x - circleOffset, y - circleOffset, compassSize, compassSize);
|
||
< // p.fillPath(outerCircle.subtracted(innerCircle), Qt::black);
|
||
---
|
||
> QPainterPath outerCircle, innerCircle;
|
||
> outerCircle.addEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2);
|
||
> innerCircle.addEllipse(x - circleOffset, y - circleOffset, compassSize, compassSize);
|
||
> p.fillPath(outerCircle.subtracted(innerCircle), Qt::black);
|
||
1471,1474c1485,1488
|
||
< // if (bearingDeg != scene.bearing_deg) {
|
||
< // update();
|
||
< // bearingDeg = scene.bearing_deg;
|
||
< // }
|
||
---
|
||
> if (bearingDeg != scene.bearing_deg) {
|
||
> update();
|
||
> bearingDeg = scene.bearing_deg;
|
||
> }
|
||
1478,1479c1492,1493
|
||
< // QPainter p(this);
|
||
< // p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
---
|
||
> QPainter p(this);
|
||
> p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
1481,1537c1495,1551
|
||
< // bearingDeg = fmod(bearingDeg, 360);
|
||
< // if (bearingDeg < 0) {
|
||
< // bearingDeg += 360;
|
||
< // }
|
||
<
|
||
< // p.drawPixmap(0, 0, staticElements);
|
||
<
|
||
< // p.translate(x, y);
|
||
< // p.rotate(bearingDeg);
|
||
< // p.drawPixmap(-compassInnerImg.width() / 2, -compassInnerImg.height() / 2, compassInnerImg);
|
||
< // p.rotate(-bearingDeg);
|
||
< // p.translate(-x, -y);
|
||
<
|
||
< // QFont font = InterFont(10, QFont::Normal);
|
||
< // for (int i = 0; i < 360; i += 15) {
|
||
< // bool isBold = abs(i - bearingDeg) <= 7;
|
||
< // font.setWeight(isBold ? QFont::Bold : QFont::Normal);
|
||
< // p.setFont(font);
|
||
< // p.setPen(QPen(Qt::white, i % 90 == 0 ? 2 : 1));
|
||
<
|
||
< // p.save();
|
||
< // p.translate(x, y);
|
||
< // p.rotate(i);
|
||
< // p.drawLine(0, -(compassSize / 2 - (i % 90 == 0 ? 12 : 8)), 0, -(compassSize / 2));
|
||
< // p.translate(0, -(compassSize / 2 + 12));
|
||
< // p.rotate(-i);
|
||
< // p.drawText(QRect(-20, -10, 40, 20), Qt::AlignCenter, QString::number(i));
|
||
< // p.restore();
|
||
< // }
|
||
<
|
||
< // p.setFont(InterFont(20, QFont::Bold));
|
||
< // std::map<QString, std::tuple<QPair<float, float>, int, QColor>> directionInfo = {
|
||
< // {"N", {{292.5, 67.5}, Qt::AlignTop | Qt::AlignHCenter, Qt::white}},
|
||
< // {"E", {{22.5, 157.5}, Qt::AlignRight | Qt::AlignVCenter, Qt::white}},
|
||
< // {"S", {{112.5, 247.5}, Qt::AlignBottom | Qt::AlignHCenter, Qt::white}},
|
||
< // {"W", {{202.5, 337.5}, Qt::AlignLeft | Qt::AlignVCenter, Qt::white}}
|
||
< // };
|
||
< // int directionOffset = 20;
|
||
<
|
||
< // for (auto &item : directionInfo) {
|
||
< // QString direction = item.first;
|
||
< // auto &[range, alignmentFlag, color] = item.second;
|
||
< // auto &[minRange, maxRange] = range;
|
||
<
|
||
< // QRect textRect(x - innerCompass + directionOffset, y - innerCompass + directionOffset, innerCompass * 2 - 2 * directionOffset, innerCompass * 2 - 2 * directionOffset);
|
||
<
|
||
< // bool isInRange = false;
|
||
< // if (minRange > maxRange) {
|
||
< // isInRange = bearingDeg >= minRange || bearingDeg <= maxRange;
|
||
< // } else {
|
||
< // isInRange = bearingDeg >= minRange && bearingDeg <= maxRange;
|
||
< // }
|
||
<
|
||
< // p.setOpacity(isInRange ? 1.0 : 0.2);
|
||
< // p.setPen(QPen(color));
|
||
< // p.drawText(textRect, alignmentFlag, direction);
|
||
< // }
|
||
---
|
||
> bearingDeg = fmod(bearingDeg, 360);
|
||
> if (bearingDeg < 0) {
|
||
> bearingDeg += 360;
|
||
> }
|
||
>
|
||
> p.drawPixmap(0, 0, staticElements);
|
||
>
|
||
> p.translate(x, y);
|
||
> p.rotate(bearingDeg);
|
||
> p.drawPixmap(-compassInnerImg.width() / 2, -compassInnerImg.height() / 2, compassInnerImg);
|
||
> p.rotate(-bearingDeg);
|
||
> p.translate(-x, -y);
|
||
>
|
||
> QFont font = InterFont(10, QFont::Normal);
|
||
> for (int i = 0; i < 360; i += 15) {
|
||
> bool isBold = abs(i - bearingDeg) <= 7;
|
||
> font.setWeight(isBold ? QFont::Bold : QFont::Normal);
|
||
> p.setFont(font);
|
||
> p.setPen(QPen(Qt::white, i % 90 == 0 ? 2 : 1));
|
||
>
|
||
> p.save();
|
||
> p.translate(x, y);
|
||
> p.rotate(i);
|
||
> p.drawLine(0, -(compassSize / 2 - (i % 90 == 0 ? 12 : 8)), 0, -(compassSize / 2));
|
||
> p.translate(0, -(compassSize / 2 + 12));
|
||
> p.rotate(-i);
|
||
> p.drawText(QRect(-20, -10, 40, 20), Qt::AlignCenter, QString::number(i));
|
||
> p.restore();
|
||
> }
|
||
>
|
||
> p.setFont(InterFont(20, QFont::Bold));
|
||
> std::map<QString, std::tuple<QPair<float, float>, int, QColor>> directionInfo = {
|
||
> {"N", {{292.5, 67.5}, Qt::AlignTop | Qt::AlignHCenter, Qt::white}},
|
||
> {"E", {{22.5, 157.5}, Qt::AlignRight | Qt::AlignVCenter, Qt::white}},
|
||
> {"S", {{112.5, 247.5}, Qt::AlignBottom | Qt::AlignHCenter, Qt::white}},
|
||
> {"W", {{202.5, 337.5}, Qt::AlignLeft | Qt::AlignVCenter, Qt::white}}
|
||
> };
|
||
> int directionOffset = 20;
|
||
>
|
||
> for (auto &item : directionInfo) {
|
||
> QString direction = item.first;
|
||
> auto &[range, alignmentFlag, color] = item.second;
|
||
> auto &[minRange, maxRange] = range;
|
||
>
|
||
> QRect textRect(x - innerCompass + directionOffset, y - innerCompass + directionOffset, innerCompass * 2 - 2 * directionOffset, innerCompass * 2 - 2 * directionOffset);
|
||
>
|
||
> bool isInRange = false;
|
||
> if (minRange > maxRange) {
|
||
> isInRange = bearingDeg >= minRange || bearingDeg <= maxRange;
|
||
> } else {
|
||
> isInRange = bearingDeg >= minRange && bearingDeg <= maxRange;
|
||
> }
|
||
>
|
||
> p.setOpacity(isInRange ? 1.0 : 0.2);
|
||
> p.setPen(QPen(color));
|
||
> p.drawText(textRect, alignmentFlag, direction);
|
||
> }
|
||
1541c1555,1562
|
||
< // setFixedSize(btn_size * 1.5, btn_size * 1.5);
|
||
---
|
||
> setFixedSize(btn_size * 1.5, btn_size * 1.5);
|
||
>
|
||
> profile_data = {
|
||
> {QPixmap("../frogpilot/assets/other_images/traffic.png"), "Traffic"},
|
||
> {QPixmap("../frogpilot/assets/other_images/aggressive.png"), "Aggressive"},
|
||
> {QPixmap("../frogpilot/assets/other_images/standard.png"), "Standard"},
|
||
> {QPixmap("../frogpilot/assets/other_images/relaxed.png"), "Relaxed"}
|
||
> };
|
||
1543,1555c1564,1569
|
||
< // profile_data = {
|
||
< // {QPixmap("../frogpilot/assets/other_images/traffic.png"), "Traffic"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/aggressive.png"), "Aggressive"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/standard.png"), "Standard"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/relaxed.png"), "Relaxed"}
|
||
< // };
|
||
<
|
||
< // profile_data_kaofui = {
|
||
< // {QPixmap("../frogpilot/assets/other_images/traffic_kaofui.png"), "Traffic"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/aggressive_kaofui.png"), "Aggressive"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/standard_kaofui.png"), "Standard"},
|
||
< // {QPixmap("../frogpilot/assets/other_images/relaxed_kaofui.png"), "Relaxed"}
|
||
< // };
|
||
---
|
||
> profile_data_kaofui = {
|
||
> {QPixmap("../frogpilot/assets/other_images/traffic_kaofui.png"), "Traffic"},
|
||
> {QPixmap("../frogpilot/assets/other_images/aggressive_kaofui.png"), "Aggressive"},
|
||
> {QPixmap("../frogpilot/assets/other_images/standard_kaofui.png"), "Standard"},
|
||
> {QPixmap("../frogpilot/assets/other_images/relaxed_kaofui.png"), "Relaxed"}
|
||
> };
|
||
1557c1571
|
||
< // transitionTimer.start();
|
||
---
|
||
> transitionTimer.start();
|
||
1559,1560c1573,1574
|
||
< // connect(this, &QPushButton::pressed, this, &DistanceButton::buttonPressed);
|
||
< // connect(this, &QPushButton::released, this, &DistanceButton::buttonReleased);
|
||
---
|
||
> connect(this, &QPushButton::pressed, this, &DistanceButton::buttonPressed);
|
||
> connect(this, &QPushButton::released, this, &DistanceButton::buttonReleased);
|
||
1564c1578
|
||
< // paramsMemory.putBool("OnroadDistanceButtonPressed", true);
|
||
---
|
||
> paramsMemory.putBool("OnroadDistanceButtonPressed", true);
|
||
1568c1582
|
||
< // paramsMemory.putBool("OnroadDistanceButtonPressed", false);
|
||
---
|
||
> paramsMemory.putBool("OnroadDistanceButtonPressed", false);
|
||
1572,1574c1586,1588
|
||
< // if (trafficModeActive != scene.traffic_mode_active || personality != static_cast<int>(scene.personality) && !trafficModeActive) {
|
||
< // transitionTimer.restart();
|
||
< // }
|
||
---
|
||
> if (trafficModeActive != scene.traffic_mode_active || personality != static_cast<int>(scene.personality) && !trafficModeActive) {
|
||
> transitionTimer.restart();
|
||
> }
|
||
1576c1590
|
||
< // personality = static_cast<int>(scene.personality);
|
||
---
|
||
> personality = static_cast<int>(scene.personality);
|
||
1581,1582c1595,1606
|
||
< // QPainter p(this);
|
||
< // p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
---
|
||
> QPainter p(this);
|
||
> p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||
>
|
||
> constexpr qreal fadeDuration = 1000.0;
|
||
> constexpr qreal textDuration = 3000.0;
|
||
> int elapsed = transitionTimer.elapsed();
|
||
>
|
||
> qreal textOpacity = qBound(0.0, 1.0 - ((elapsed - textDuration) / fadeDuration), 1.0);
|
||
> qreal imageOpacity = qBound(0.0, (elapsed - textDuration) / fadeDuration, 1.0);
|
||
>
|
||
> int profile = trafficModeActive ? 0 : personality + 1;
|
||
> auto &[profileImage, profileText] = scene.use_kaofui_icons ? profile_data_kaofui[profile] : profile_data[profile];
|
||
1584,1604c1608,1618
|
||
< // constexpr qreal fadeDuration = 1000.0;
|
||
< // constexpr qreal textDuration = 3000.0;
|
||
< // int elapsed = transitionTimer.elapsed();
|
||
<
|
||
< // qreal textOpacity = qBound(0.0, 1.0 - ((elapsed - textDuration) / fadeDuration), 1.0);
|
||
< // qreal imageOpacity = qBound(0.0, (elapsed - textDuration) / fadeDuration, 1.0);
|
||
<
|
||
< // int profile = trafficModeActive ? 0 : personality + 1;
|
||
< // auto &[profileImage, profileText] = scene.use_kaofui_icons ? profile_data_kaofui[profile] : profile_data[profile];
|
||
<
|
||
< // if (textOpacity != 0.0) {
|
||
< // p.setOpacity(textOpacity);
|
||
< // p.setFont(InterFont(40, QFont::Bold));
|
||
< // p.setPen(Qt::white);
|
||
< // QRect textRect(-25, 0, width(), height() + 95);
|
||
< // p.drawText(textRect, Qt::AlignCenter, profileText);
|
||
< // }
|
||
<
|
||
< // if (imageOpacity != 0.0) {
|
||
< // drawIcon(p, QPoint((btn_size / 2) * 1.25, btn_size / 2 + 95), profileImage, Qt::transparent, imageOpacity);
|
||
< // }
|
||
---
|
||
> if (textOpacity != 0.0) {
|
||
> p.setOpacity(textOpacity);
|
||
> p.setFont(InterFont(40, QFont::Bold));
|
||
> p.setPen(Qt::white);
|
||
> QRect textRect(-25, 0, width(), height() + 95);
|
||
> p.drawText(textRect, Qt::AlignCenter, profileText);
|
||
> }
|
||
>
|
||
> if (imageOpacity != 0.0) {
|
||
> drawIcon(p, QPoint((btn_size / 2) * 1.25, btn_size / 2 + 95), profileImage, Qt::transparent, imageOpacity);
|
||
> }
|
||
1729c1743
|
||
< // acceleration = scene.acceleration;
|
||
---
|
||
> acceleration = scene.acceleration;
|
||
1731,1732c1745,1746
|
||
< // accelerating = acceleration > 0.25;
|
||
< // decelerating = acceleration < -0.25;
|
||
---
|
||
> accelerating = acceleration > 0.25;
|
||
> decelerating = acceleration < -0.25;
|
||
1734,1736c1748,1750
|
||
< // if (accelerating || decelerating) {
|
||
< // update();
|
||
< // }
|
||
---
|
||
> if (accelerating || decelerating) {
|
||
> update();
|
||
> }
|
||
1740,1741c1754,1755
|
||
< // QPainter p(this);
|
||
< // p.setRenderHint(QPainter::Antialiasing);
|
||
---
|
||
> QPainter p(this);
|
||
> p.setRenderHint(QPainter::Antialiasing);
|
||
1743,1744c1757,1758
|
||
< // int totalWidth = 2 * img_size;
|
||
< // int startX = (width() - totalWidth) / 2;
|
||
---
|
||
> int totalWidth = 2 * img_size;
|
||
> int startX = (width() - totalWidth) / 2;
|
||
1746,1747c1760,1761
|
||
< // int brakeX = startX + img_size / 2;
|
||
< // int gasX = startX + img_size;
|
||
---
|
||
> int brakeX = startX + img_size / 2;
|
||
> int gasX = startX + img_size;
|
||
1749,1750c1763,1764
|
||
< // float brakeOpacity = scene.standstill ? 1.0f : decelerating ? std::max(0.25f, std::abs(acceleration)) : 0.25f;
|
||
< // float gasOpacity = accelerating ? std::max(0.25f, acceleration) : 0.25f;
|
||
---
|
||
> float brakeOpacity = scene.standstill ? 1.0f : decelerating ? std::max(0.25f, std::abs(acceleration)) : 0.25f;
|
||
> float gasOpacity = accelerating ? std::max(0.25f, acceleration) : 0.25f;
|
||
1752,1753c1766,1767
|
||
< // p.setOpacity(brakeOpacity);
|
||
< // p.drawPixmap(brakeX, (height() - img_size) / 2, brake_pedal_img);
|
||
---
|
||
> p.setOpacity(brakeOpacity);
|
||
> p.drawPixmap(brakeX, (height() - img_size) / 2, brake_pedal_img);
|
||
1755,1756c1769,1770
|
||
< // p.setOpacity(gasOpacity);
|
||
< // p.drawPixmap(gasX, (height() - img_size) / 2, gas_pedal_img);
|
||
---
|
||
> p.setOpacity(gasOpacity);
|
||
> p.drawPixmap(gasX, (height() - img_size) / 2, gas_pedal_img);
|
||
diff -r clearpilot/selfdrive/ui/qt/onroad.h FrogPilot/selfdrive/ui/qt/onroad.h
|
||
53,59c53,59
|
||
< // int bearingDeg;
|
||
< // int circleOffset;
|
||
< // int compassSize;
|
||
< // int degreeLabelOffset;
|
||
< // int innerCompass;
|
||
< // int x;
|
||
< // int y;
|
||
---
|
||
> int bearingDeg;
|
||
> int circleOffset;
|
||
> int compassSize;
|
||
> int degreeLabelOffset;
|
||
> int innerCompass;
|
||
> int x;
|
||
> int y;
|
||
83c83
|
||
< // int personality;
|
||
---
|
||
> int personality;
|
||
Only in clearpilot/selfdrive/ui/qt: ready.cc
|
||
Only in clearpilot/selfdrive/ui/qt: ready.h
|
||
diff -r clearpilot/selfdrive/ui/qt/sidebar.cc FrogPilot/selfdrive/ui/qt/sidebar.cc
|
||
79,81c79,81
|
||
< {1, {"frog_theme", {QColor(255, 255, 255)}}},
|
||
< {2, {"tesla_theme", {QColor(255, 255, 255)}}},
|
||
< {3, {"stalin_theme", {QColor(255, 255, 255)}}}
|
||
---
|
||
> {1, {"frog_theme", {QColor(23, 134, 68)}}},
|
||
> {2, {"tesla_theme", {QColor(0, 72, 255)}}},
|
||
> {3, {"stalin_theme", {QColor(255, 0, 0)}}}
|
||
Only in clearpilot/selfdrive/ui/qt: spinner
|
||
diff -r clearpilot/selfdrive/ui/qt/util.cc FrogPilot/selfdrive/ui/qt/util.cc
|
||
29c29
|
||
< return QObject::tr("ClearPilot");
|
||
---
|
||
> return QObject::tr("FrogPilot");
|
||
diff -r clearpilot/selfdrive/ui/qt/widgets/drive_stats.cc FrogPilot/selfdrive/ui/qt/widgets/drive_stats.cc
|
||
71,72c71,72
|
||
< labels.routes->setText(QString::number(paramsStorage.getInt("FrogPilotDrives")));
|
||
< labels.distance->setText(QString::number(int(paramsStorage.getFloat("FrogPilotKilometers") * (metric_ ? 1 : KM_TO_MILE))));
|
||
---
|
||
> labels.routes->setText(QString::number(params.getInt("FrogPilotDrives")));
|
||
> labels.distance->setText(QString::number(int(params.getFloat("FrogPilotKilometers") * (metric_ ? 1 : KM_TO_MILE))));
|
||
74c74
|
||
< labels.hours->setText(QString::number(int(paramsStorage.getFloat("FrogPilotMinutes") / 60)));
|
||
---
|
||
> labels.hours->setText(QString::number(int(params.getFloat("FrogPilotMinutes") / 60)));
|
||
diff -r clearpilot/selfdrive/ui/qt/widgets/drive_stats.h FrogPilot/selfdrive/ui/qt/widgets/drive_stats.h
|
||
21d20
|
||
< Params paramsStorage{"/persist/params"};
|
||
diff -r clearpilot/selfdrive/ui/SConscript FrogPilot/selfdrive/ui/SConscript
|
||
42d41
|
||
< # CLEARPILOT added qt/ready.cc
|
||
47,48c46
|
||
< "../frogpilot/screenrecorder/omx_encoder.cc", "../frogpilot/screenrecorder/screenrecorder.cc",
|
||
< "qt/ready.cc"]
|
||
---
|
||
> "../frogpilot/screenrecorder/omx_encoder.cc", "../frogpilot/screenrecorder/screenrecorder.cc"]
|
||
83,85d80
|
||
<
|
||
< # Clearpilot tools
|
||
< qt_env.Program("/data/openpilot/system/clearpilot/tools/qt_shell", ["/data/openpilot/system/clearpilot/tools/qt_shell.cc"], LIBS=qt_libs)
|
||
diff -r clearpilot/selfdrive/ui/soundd.py FrogPilot/selfdrive/ui/soundd.py
|
||
253,262c253,259
|
||
< # Clearpilot: Impl theme switcher
|
||
< # if current_holiday_theme != 0:
|
||
< # theme_name = holiday_theme_configuration.get(current_holiday_theme)
|
||
< # self.sound_directory = BASEDIR + ("/selfdrive/frogpilot/assets/holiday_themes/" + theme_name + "/sounds/")
|
||
< # self.goat_scream = False
|
||
< # else:
|
||
< # theme_name = theme_configuration.get(custom_sounds)
|
||
< # self.sound_directory = BASEDIR + ("/selfdrive/clearpilot/theme/" + theme_name + "/sounds/" if custom_sounds != 0 else "/selfdrive/assets/sounds/")
|
||
<
|
||
< self.sound_directory = BASEDIR + ("/selfdrive/clearpilot/theme/clearpilot/sounds/" if custom_sounds != 0 else "/selfdrive/assets/sounds/")
|
||
---
|
||
> if current_holiday_theme != 0:
|
||
> theme_name = holiday_theme_configuration.get(current_holiday_theme)
|
||
> self.sound_directory = BASEDIR + ("/selfdrive/frogpilot/assets/holiday_themes/" + theme_name + "/sounds/")
|
||
> self.goat_scream = False
|
||
> else:
|
||
> theme_name = theme_configuration.get(custom_sounds)
|
||
> self.sound_directory = BASEDIR + ("/selfdrive/frogpilot/assets/custom_themes/" + theme_name + "/sounds/" if custom_sounds != 0 else "/selfdrive/assets/sounds/")
|
||
diff -r clearpilot/selfdrive/ui/spinner FrogPilot/selfdrive/ui/spinner
|
||
3,4c3,4
|
||
< if [ -f /TICI ] && [ ! -f qt/spinner ]; then
|
||
< cp qt/spinner_larch64 qt/spinner
|
||
---
|
||
> if [ -f /TICI ] && [ ! -f _spinner ]; then
|
||
> cp qt/spinner_larch64 _spinner
|
||
7c7
|
||
< exec ./qt/spinner "$1"
|
||
---
|
||
> exec ./_spinner "$1"
|
||
diff -r clearpilot/selfdrive/ui/translations/main_ar.ts FrogPilot/selfdrive/ui/translations/main_ar.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
734,737d364
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
940c567
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
991,994d617
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1041c664
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1059,1078d681
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1272,1295d874
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1317c896
|
||
< <translation type="vanished">يتم تحميل التحديثات فقط عندما تكون السيارة متوقفة.</translation>
|
||
---
|
||
> <translation>يتم تحميل التحديثات فقط عندما تكون السيارة متوقفة.</translation>
|
||
1371,1394d949
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">عرض</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1656,1663d1210
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_de.ts FrogPilot/selfdrive/ui/translations/main_de.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
730,733d360
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
974,977d600
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1023c646
|
||
< <translation type="vanished">x</translation>
|
||
---
|
||
> <translation>x</translation>
|
||
1041,1060d663
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1255,1278d857
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1301c880
|
||
< <translation type="vanished">Updates werden nur heruntergeladen, wenn das Auto aus ist.</translation>
|
||
---
|
||
> <translation>Updates werden nur heruntergeladen, wenn das Auto aus ist.</translation>
|
||
1355,1378d933
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">ANSEHEN</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1641,1648d1195
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_fr.ts FrogPilot/selfdrive/ui/translations/main_fr.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
730,733d360
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
936c563
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
975,978d601
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1025c648
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1043,1062d665
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1256,1279d858
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1285c864
|
||
< <translation type="vanished">Les MàJ sont téléchargées uniquement si la voiture est éteinte.</translation>
|
||
---
|
||
> <translation>Les MàJ sont téléchargées uniquement si la voiture est éteinte.</translation>
|
||
1355,1378d933
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">VOIR</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1640,1647d1194
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_ja.ts FrogPilot/selfdrive/ui/translations/main_ja.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
934c561
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
970,973d596
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1019c642
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1037,1056d659
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1250,1273d852
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1279c858
|
||
< <translation type="vanished">車の電源がオフの間のみ、アップデートのダウンロードが行われます。</translation>
|
||
---
|
||
> <translation>車の電源がオフの間のみ、アップデートのダウンロードが行われます。</translation>
|
||
1349,1372d927
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">見る</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1633,1640d1187
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_ko.ts FrogPilot/selfdrive/ui/translations/main_ko.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
971,974d597
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1021c644
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1039,1058d661
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1252,1275d854
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1281c860
|
||
< <translation type="vanished">업데이트는 차량 시동이 꺼졌을 때 다운로드됩니다.</translation>
|
||
---
|
||
> <translation>업데이트는 차량 시동이 꺼졌을 때 다운로드됩니다.</translation>
|
||
1351,1374d929
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">보기</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1636,1643d1190
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_pt-BR.ts FrogPilot/selfdrive/ui/translations/main_pt-BR.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
730,733d360
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
936c563
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
975,978d601
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1025c648
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1043,1062d665
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1256,1279d858
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1285c864
|
||
< <translation type="vanished">Atualizações baixadas durante o motor desligado.</translation>
|
||
---
|
||
> <translation>Atualizações baixadas durante o motor desligado.</translation>
|
||
1355,1378d933
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">VER</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1640,1647d1194
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_th.ts FrogPilot/selfdrive/ui/translations/main_th.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
971,974d597
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1021c644
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1039,1058d661
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1252,1275d854
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1297c876
|
||
< <translation type="vanished">ตัวอัปเดตจะดำเนินการดาวน์โหลดเมื่อรถดับเครื่องยนต์อยู่เท่านั้น</translation>
|
||
---
|
||
> <translation>ตัวอัปเดตจะดำเนินการดาวน์โหลดเมื่อรถดับเครื่องยนต์อยู่เท่านั้น</translation>
|
||
1351,1374d929
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">ดู</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1636,1643d1190
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_tr.ts FrogPilot/selfdrive/ui/translations/main_tr.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
934c561
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
970,973d596
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1019c642
|
||
< <translation type="vanished">x</translation>
|
||
---
|
||
> <translation>x</translation>
|
||
1037,1056d659
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1250,1273d852
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1293a873,876
|
||
> <source>Updates are only downloaded while the car is off.</source>
|
||
> <translation type="unfinished"></translation>
|
||
> </message>
|
||
> <message>
|
||
1345,1368d927
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">BAK</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1629,1636d1187
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_zh-CHS.ts FrogPilot/selfdrive/ui/translations/main_zh-CHS.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
971,974d597
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1021c644
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1039,1058d661
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1252,1275d854
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1281c860
|
||
< <translation type="vanished">车辆熄火时才能下载升级文件。</translation>
|
||
---
|
||
> <translation>车辆熄火时才能下载升级文件。</translation>
|
||
1351,1374d929
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">查看</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1636,1643d1190
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/selfdrive/ui/translations/main_zh-CHT.ts FrogPilot/selfdrive/ui/translations/main_zh-CHT.ts
|
||
18,21d17
|
||
< <message>
|
||
< <source>Disable Internet Check</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
116,289d111
|
||
< <message>
|
||
< <source> meters</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> feet</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicle in blind spot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> m/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>m/s</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> ft/s²</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Accel: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Max: %1%2</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> | Obstacle Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> - Stop Factor: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Follow Distance: </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Confirm speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Ignore speed limit
|
||
< </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental Mode ready</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Conditional Experimental overridden</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode manually activated</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming intersection</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> upcoming turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated due to</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> SLC</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> no speed limit set</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> speed being less than </source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> kph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> mph</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for slower lead</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for turn</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> / lane change</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for curve</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Experimental Mode activated for stop</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> sign / stop light</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Always On Lateral active</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Press the "Cruise Control" button to disable</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Long press the "distance" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double press the "LKAS" button to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>. Double tap the screen to revert</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
474,664d295
|
||
< <message>
|
||
< <source>Delete Driving Data</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>DELETE</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>This button provides a swift and secure way to permanently delete all stored driving footage and data from your device. Ideal for maintaining privacy or freeing up space.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to permanently delete all of your driving footage and data?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting footage...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleted!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash Panda</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FLASH</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to troubleshoot and update the Panda device's firmware.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to flash the Panda?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flash</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Flashing...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset Toggle Settings</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Reset your toggle settings back to default.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to completely reset your toggle settings? This is irreversible!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Resetting toggles...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restore</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FrogPilot Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your FrogPilot backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Name your backup</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backing up...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Success!</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Failed...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a backup to delete</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to delete this backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Deleting...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Select a restore point</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this version of FrogPilot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Restoring...</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle Backups</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Backup, delete, or restore your toggle backups.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to restore this toggle backup?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Lock Doors</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LOCK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Use this button to lock the doors on Toyota/Lexus vehicles.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Are you sure you want to soft reboot?</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Disengage to Soft Reboot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< </context>
|
||
< <context>
|
||
< <name>DriveStats</name>
|
||
< <message>
|
||
< <source>Drives</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Hours</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ALL TIME</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>PAST WEEK</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>FROGPILOT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>KM</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Miles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
729,732d359
|
||
< <message>
|
||
< <source>Manage at %1</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
935c562
|
||
< <translation type="vanished">openpilot</translation>
|
||
---
|
||
> <translation>openpilot</translation>
|
||
971,974d597
|
||
< <message>
|
||
< <source>ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1021c644
|
||
< <translation type="vanished">×</translation>
|
||
---
|
||
> <translation>×</translation>
|
||
1039,1058d661
|
||
< <message>
|
||
< <source>← Back</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Controls</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Navigation</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Vehicles</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Visuals</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1252,1275d854
|
||
< <message>
|
||
< <source>GPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>CPU</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> GB</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>MEMORY</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>LEFT</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>USED</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1281c860
|
||
< <translation type="vanished">系統更新只會在熄火時下載。</translation>
|
||
---
|
||
> <translation>系統更新只會在熄火時下載。</translation>
|
||
1351,1374d929
|
||
< <message>
|
||
< <source>Updates are only downloaded while the car is off or in park.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source> Automatically Update ClearPilot</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>ClearPilot will automatically update itself and it's assets when you're offroad and connected to Wi-Fi.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Error Log</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>VIEW</source>
|
||
< <translation type="unfinished">觀看</translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>View the error log for openpilot crashes.</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
1636,1643d1190
|
||
< </message>
|
||
< <message>
|
||
< <source>Uploading disabled</source>
|
||
< <translation type="unfinished"></translation>
|
||
< </message>
|
||
< <message>
|
||
< <source>Toggle off the 'Disable Uploading' toggle to enable uploads.</source>
|
||
< <translation type="unfinished"></translation>
|
||
diff -r clearpilot/selfdrive/ui/ui.cc FrogPilot/selfdrive/ui/ui.cc
|
||
361,363c361,362
|
||
< // CLEARPILOT
|
||
< scene.lane_line_width = /* params.getInt("LaneLinesWidth") */ 2 * (scene.is_metric ? 1.0f : INCH_TO_CM) / 200.0f;
|
||
< scene.path_edge_width = /* params.getInt("PathEdgeWidth"); */ 16;
|
||
---
|
||
> scene.lane_line_width = params.getInt("LaneLinesWidth") * (scene.is_metric ? 1.0f : INCH_TO_CM) / 200.0f;
|
||
> scene.path_edge_width = params.getInt("PathEdgeWidth");
|
||
394c393
|
||
< scene.screen_timeout = screen_management ? params.getInt("ScreenTimeout") : 120;
|
||
---
|
||
> scene.screen_timeout = screen_management ? params.getInt("ScreenTimeout") : 30;
|
||
diff -r clearpilot/selfdrive/ui/ui.h FrogPilot/selfdrive/ui/ui.h
|
||
21c21
|
||
< const int UI_BORDER_SIZE = 16; // clearpilot
|
||
---
|
||
> const int UI_BORDER_SIZE = 30;
|
||
29c29
|
||
< const float MAX_DRAW_DISTANCE = 100.0;
|
||
---
|
||
> const float MAX_DRAW_DISTANCE = 100.0;
|
||
109a110,120
|
||
> typedef enum UIStatus {
|
||
> STATUS_DISENGAGED,
|
||
> STATUS_OVERRIDE,
|
||
> STATUS_ENGAGED,
|
||
>
|
||
> // FrogPilot statuses
|
||
> STATUS_ALWAYS_ON_LATERAL_ACTIVE,
|
||
> STATUS_TRAFFIC_MODE_ACTIVE,
|
||
>
|
||
> } UIStatus;
|
||
>
|
||
119,128d129
|
||
<
|
||
< // Clearpilot redefined these.
|
||
< typedef enum UIStatus {
|
||
< STATUS_DISENGAGED,
|
||
< STATUS_OVERRIDE,
|
||
< STATUS_ENGAGED,
|
||
< STATUS_ALWAYS_ON_LATERAL_ACTIVE,
|
||
< STATUS_TRAFFIC_MODE_ACTIVE,
|
||
< STATUS_EXPERIMENTAL_ACTIVE,
|
||
< } UIStatus;
|
||
130d130
|
||
< // Clearpilot custom colors
|
||
133,137c133,138
|
||
< [STATUS_OVERRIDE] = QColor(64, 85, 245, 0xd1), // When you nudge the steering wheel while engaged
|
||
< [STATUS_ENGAGED] = QColor(64, 85, 245, 0xd1), // Orange
|
||
< [STATUS_ALWAYS_ON_LATERAL_ACTIVE] = QColor(162, 221, 235, 0xd1), // Gray
|
||
< [STATUS_TRAFFIC_MODE_ACTIVE] = QColor(0xc9, 0x22, 0x31, 0xd1), // ? unused?
|
||
< [STATUS_EXPERIMENTAL_ACTIVE] = QColor(201, 41, 204, 0xd1), // Magenta
|
||
---
|
||
> [STATUS_OVERRIDE] = QColor(0x91, 0x9b, 0x95, 0xf1),
|
||
> [STATUS_ENGAGED] = QColor(0x17, 0x86, 0x44, 0xf1),
|
||
>
|
||
> // FrogPilot colors
|
||
> [STATUS_ALWAYS_ON_LATERAL_ACTIVE] = QColor(0x0a, 0xba, 0xb5, 0xf1),
|
||
> [STATUS_TRAFFIC_MODE_ACTIVE] = QColor(0xc9, 0x22, 0x31, 0xf1),
|
||
142c143
|
||
< {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(4, 64, 11, 0xf1)}, // CLEARPILOT changed to a shade of dark blue
|
||
---
|
||
> {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)},
|
||
144c145
|
||
< {cereal::ControlsState::AlertStatus::FROGPILOT, QColor(47, 158, 238, 0xf1)}, // CLEARPILOT changed to light blue
|
||
---
|
||
> {cereal::ControlsState::AlertStatus::FROGPILOT, QColor(0x17, 0x86, 0x44, 0xf1)},
|
||
diff -r clearpilot/selfdrive/updated/updated.py FrogPilot/selfdrive/updated/updated.py
|
||
89,90d88
|
||
< # CLEARPILOT
|
||
< return b""
|
||
134,135c132
|
||
< # CLEARPILOT
|
||
< return
|
||
---
|
||
>
|
||
Only in clearpilot/system: clearpilot
|
||
diff -r clearpilot/system/hardware/base.h FrogPilot/system/hardware/base.h
|
||
29d28
|
||
< static void soft_reboot() {}
|
||
diff -r clearpilot/system/hardware/base.py FrogPilot/system/hardware/base.py
|
||
33,36d32
|
||
< def soft_reboot(self):
|
||
< pass
|
||
<
|
||
< @abstractmethod
|
||
diff -r clearpilot/system/hardware/pc/hardware.py FrogPilot/system/hardware/pc/hardware.py
|
||
23,25d22
|
||
< def soft_reboot(self):
|
||
< print("SOFT REBOOT!")
|
||
<
|
||
diff -r clearpilot/system/hardware/tici/hardware.h FrogPilot/system/hardware/tici/hardware.h
|
||
53,69d52
|
||
< static void soft_reboot() {
|
||
< const std::vector<std::string> commands = {
|
||
< "rm -f /tmp/safe_staging_overlay.lock",
|
||
< "tmux new -s commatmp -d '/data/continue.sh'",
|
||
< "tmux kill-session -t comma",
|
||
< "tmux rename comma"
|
||
< };
|
||
< for (const auto& cmd : commands) {
|
||
< int result;
|
||
< do {
|
||
< result = std::system(cmd.c_str());
|
||
< } while (result != 0);
|
||
< if (result != 0) {
|
||
< reboot();
|
||
< }
|
||
< }
|
||
< }
|
||
diff -r clearpilot/system/hardware/tici/hardware.py FrogPilot/system/hardware/tici/hardware.py
|
||
135,144d134
|
||
< def soft_reboot(self):
|
||
< commands = [
|
||
< ['rm', '-f', '/tmp/safe_staging_overlay.lock'],
|
||
< ['tmux', 'new', '-s', 'commatmp', '-d', '/data/continue.sh'],
|
||
< ['tmux', 'kill-session', '-t', 'comma'],
|
||
< ['tmux', 'rename', 'comma'],
|
||
< ]
|
||
< for command in commands:
|
||
< subprocess.run(command, stderr=subprocess.DEVNULL, stdout=subprocess.DEVNULL)
|
||
<
|
||
diff -r clearpilot/system/loggerd/uploader.py FrogPilot/system/loggerd/uploader.py
|
||
17d16
|
||
< import openpilot.selfdrive.sentry as sentry
|
||
255,256c254
|
||
< openpilot_crashed = os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt'))
|
||
< if network_type == NetworkType.none or not at_home or openpilot_crashed:
|
||
---
|
||
> if network_type == NetworkType.none or not at_home:
|
||
diff -r clearpilot/system/qcomgpsd/nmeaport.py FrogPilot/system/qcomgpsd/nmeaport.py
|
||
96c96
|
||
< with open(device, "r") as nmeaport:
|
||
---
|
||
> with open(device) as nmeaport:
|
||
diff -r clearpilot/system/qcomgpsd/qcomgpsd.py FrogPilot/system/qcomgpsd/qcomgpsd.py
|
||
13c13
|
||
< from typing import NoReturn, Optional
|
||
---
|
||
> from typing import NoReturn
|
||
93c93
|
||
< def at_cmd(cmd: str) -> Optional[str]:
|
||
---
|
||
> def at_cmd(cmd: str) -> str | None:
|
||
208c208
|
||
< def wait_for_modem():
|
||
---
|
||
> def wait_for_modem(cmd="AT+QGPS?"):
|
||
211c211
|
||
< ret = subprocess.call("mmcli -m any --timeout 10 --command=\"AT+QGPS?\"", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True)
|
||
---
|
||
> ret = subprocess.call(f"mmcli -m any --timeout 10 --command=\"{cmd}\"", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True)
|
||
345c345
|
||
< dt_timestamp = (datetime.datetime(1980, 1, 6, 0, 0, 0, 0, datetime.timezone.utc) +
|
||
---
|
||
> dt_timestamp = (datetime.datetime(1980, 1, 6, 0, 0, 0, 0, datetime.UTC) +
|
||
355,356c355,356
|
||
< gps.flags = 1 if gps.verticalAccuracy != 500 else 0
|
||
< if gps.flags:
|
||
---
|
||
> gps.hasFix = gps.verticalAccuracy != 500
|
||
> if gps.hasFix:
|
||
Only in FrogPilot/system/tests: __init__.py
|
||
Only in FrogPilot/system/tests: test_logmessaged.py
|
||
diff -r clearpilot/system/timed.py FrogPilot/system/timed.py
|
||
59d58
|
||
< tf = TimezoneFinder()
|
||
Only in FrogPilot/system: ugpsd.py
|
||
diff -r clearpilot/system/version.py FrogPilot/system/version.py
|
||
4c4,5
|
||
< from typing import List, Callable, TypeVar
|
||
---
|
||
> from typing import TypeVar
|
||
> from collections.abc import Callable
|
||
21c22
|
||
< def run_cmd(cmd: List[str]) -> str:
|
||
---
|
||
> def run_cmd(cmd: list[str]) -> str:
|
||
25c26
|
||
< def run_cmd_default(cmd: List[str], default: str = "") -> str:
|
||
---
|
||
> def run_cmd_default(cmd: list[str], default: str = "") -> str:
|
||
diff -r clearpilot/system/webrtc/device/audio.py FrogPilot/system/webrtc/device/audio.py
|
||
3d2
|
||
< from typing import Optional, List, Tuple
|
||
20c19
|
||
< def __init__(self, audio_format: int = pyaudio.paInt16, rate: int = 16000, channels: int = 1, packet_time: float = 0.020, device_index: Optional[int] = None):
|
||
---
|
||
> def __init__(self, audio_format: int = pyaudio.paInt16, rate: int = 16000, channels: int = 1, packet_time: float = 0.020, device_index: int = None):
|
||
52c51
|
||
< def __init__(self, audio_format: int = pyaudio.paInt16, rate: int = 48000, channels: int = 2, packet_time: float = 0.2, device_index: Optional[int] = None):
|
||
---
|
||
> def __init__(self, audio_format: int = pyaudio.paInt16, rate: int = 48000, channels: int = 2, packet_time: float = 0.2, device_index: int = None):
|
||
65c64
|
||
< self.tracks_and_tasks: List[Tuple[aiortc.MediaStreamTrack, Optional[asyncio.Task]]] = []
|
||
---
|
||
> self.tracks_and_tasks: list[tuple[aiortc.MediaStreamTrack, asyncio.Task | None]] = []
|
||
diff -r clearpilot/system/webrtc/device/video.py FrogPilot/system/webrtc/device/video.py
|
||
2d1
|
||
< from typing import Optional
|
||
43c42
|
||
< def codec_preference(self) -> Optional[str]:
|
||
---
|
||
> def codec_preference(self) -> str | None:
|
||
diff -r clearpilot/system/webrtc/schema.py FrogPilot/system/webrtc/schema.py
|
||
2c2
|
||
< from typing import Union, List, Dict, Any
|
||
---
|
||
> from typing import Any
|
||
5c5
|
||
< def generate_type(type_walker, schema_walker) -> Union[str, List[Any], Dict[str, Any]]:
|
||
---
|
||
> def generate_type(type_walker, schema_walker) -> str | list[Any] | dict[str, Any]:
|
||
18c18
|
||
< def generate_struct(schema: capnp.lib.capnp._StructSchema) -> Dict[str, Any]:
|
||
---
|
||
> def generate_struct(schema: capnp.lib.capnp._StructSchema) -> dict[str, Any]:
|
||
22c22
|
||
< def generate_field(field: capnp.lib.capnp._StructSchemaField) -> Union[str, List[Any], Dict[str, Any]]:
|
||
---
|
||
> def generate_field(field: capnp.lib.capnp._StructSchemaField) -> str | list[Any] | dict[str, Any]:
|
||
Only in FrogPilot/system/webrtc/tests: test_stream_session.py
|
||
Only in FrogPilot/system/webrtc/tests: test_webrtcd.py
|
||
diff -r clearpilot/system/webrtc/webrtcd.py FrogPilot/system/webrtc/webrtcd.py
|
||
9c9
|
||
< from typing import Any, List, Optional, Union, TYPE_CHECKING
|
||
---
|
||
> from typing import Any, TYPE_CHECKING
|
||
27c27
|
||
< self.channels: List['RTCDataChannel'] = []
|
||
---
|
||
> self.channels: list['RTCDataChannel'] = []
|
||
104a105,116
|
||
> class DynamicPubMaster(messaging.PubMaster):
|
||
> def __init__(self, *args, **kwargs):
|
||
> super().__init__(*args, **kwargs)
|
||
> self.lock = asyncio.Lock()
|
||
>
|
||
> async def add_services_if_needed(self, services):
|
||
> async with self.lock:
|
||
> for service in services:
|
||
> if service not in self.sock:
|
||
> self.sock[service] = messaging.pub_sock(service)
|
||
>
|
||
>
|
||
106c118,120
|
||
< def __init__(self, sdp: str, cameras: List[str], incoming_services: List[str], outgoing_services: List[str], debug_mode: bool = False):
|
||
---
|
||
> shared_pub_master = DynamicPubMaster([])
|
||
>
|
||
> def __init__(self, sdp: str, cameras: list[str], incoming_services: list[str], outgoing_services: list[str], debug_mode: bool = False):
|
||
131,133c145,153
|
||
< self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services))
|
||
< self.incoming_bridge = CerealIncomingMessageProxy(messaging.PubMaster(incoming_services))
|
||
< self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge)
|
||
---
|
||
> self.incoming_bridge: CerealIncomingMessageProxy | None = None
|
||
> self.incoming_bridge_services = incoming_services
|
||
> self.outgoing_bridge: CerealOutgoingMessageProxy | None = None
|
||
> self.outgoing_bridge_runner: CerealProxyRunner | None = None
|
||
> if len(incoming_services) > 0:
|
||
> self.incoming_bridge = CerealIncomingMessageProxy(self.shared_pub_master)
|
||
> if len(outgoing_services) > 0:
|
||
> self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services))
|
||
> self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge)
|
||
135,136c155,156
|
||
< self.audio_output: Optional[Union[AudioOutputSpeaker, MediaBlackhole]] = None
|
||
< self.run_task: Optional[asyncio.Task] = None
|
||
---
|
||
> self.audio_output: AudioOutputSpeaker | MediaBlackhole | None = None
|
||
> self.run_task: asyncio.Task | None = None
|
||
154a175
|
||
> assert self.incoming_bridge is not None
|
||
164,167c185,191
|
||
< self.stream.set_message_handler(self.message_handler)
|
||
< channel = self.stream.get_messaging_channel()
|
||
< self.outgoing_bridge_runner.proxy.add_channel(channel)
|
||
< self.outgoing_bridge_runner.start()
|
||
---
|
||
> if self.incoming_bridge is not None:
|
||
> await self.shared_pub_master.add_services_if_needed(self.incoming_bridge_services)
|
||
> self.stream.set_message_handler(self.message_handler)
|
||
> if self.outgoing_bridge_runner is not None:
|
||
> channel = self.stream.get_messaging_channel()
|
||
> self.outgoing_bridge_runner.proxy.add_channel(channel)
|
||
> self.outgoing_bridge_runner.start()
|
||
184c208,209
|
||
< self.outgoing_bridge_runner.stop()
|
||
---
|
||
> if self.outgoing_bridge is not None:
|
||
> self.outgoing_bridge_runner.stop()
|
||
192,194c217,219
|
||
< cameras: List[str]
|
||
< bridge_services_in: List[str] = field(default_factory=list)
|
||
< bridge_services_out: List[str] = field(default_factory=list)
|
||
---
|
||
> cameras: list[str]
|
||
> bridge_services_in: list[str] = field(default_factory=list)
|
||
> bridge_services_out: list[str] = field(default_factory=list)
|
||
diff -r clearpilot/teleoprtc/builder.py FrogPilot/teleoprtc/builder.py
|
||
2d1
|
||
< from typing import List, Dict
|
||
19c18
|
||
< self.requested_camera_types: List[str] = []
|
||
---
|
||
> self.requested_camera_types: list[str] = []
|
||
21c20
|
||
< self.audio_tracks: List[aiortc.MediaStreamTrack] = []
|
||
---
|
||
> self.audio_tracks: list[aiortc.MediaStreamTrack] = []
|
||
52c51
|
||
< self.video_tracks: Dict[str, aiortc.MediaStreamTrack] = dict()
|
||
---
|
||
> self.video_tracks: dict[str, aiortc.MediaStreamTrack] = dict()
|
||
54c53
|
||
< self.audio_tracks: List[aiortc.MediaStreamTrack] = []
|
||
---
|
||
> self.audio_tracks: list[aiortc.MediaStreamTrack] = []
|
||
diff -r clearpilot/teleoprtc/info.py FrogPilot/teleoprtc/info.py
|
||
1d0
|
||
<
|
||
diff -r clearpilot/teleoprtc/stream.py FrogPilot/teleoprtc/stream.py
|
||
5c5,6
|
||
< from typing import Callable, Awaitable, Dict, List, Any, Optional
|
||
---
|
||
> from typing import Any
|
||
> from collections.abc import Callable, Awaitable
|
||
16c17
|
||
< video: List[str]
|
||
---
|
||
> video: list[str]
|
||
25c26
|
||
< consumed_camera_types: List[str],
|
||
---
|
||
> consumed_camera_types: list[str],
|
||
27,28c28,29
|
||
< video_producer_tracks: List[aiortc.MediaStreamTrack],
|
||
< audio_producer_tracks: List[aiortc.MediaStreamTrack],
|
||
---
|
||
> video_producer_tracks: list[aiortc.MediaStreamTrack],
|
||
> audio_producer_tracks: list[aiortc.MediaStreamTrack],
|
||
34c35
|
||
< self.expected_number_of_incoming_media: Optional[int] = None
|
||
---
|
||
> self.expected_number_of_incoming_media: int | None = None
|
||
36,39c37,40
|
||
< self.incoming_camera_tracks: Dict[str, aiortc.MediaStreamTrack] = dict()
|
||
< self.incoming_audio_tracks: List[aiortc.MediaStreamTrack] = []
|
||
< self.outgoing_video_tracks: List[aiortc.MediaStreamTrack] = video_producer_tracks
|
||
< self.outgoing_audio_tracks: List[aiortc.MediaStreamTrack] = audio_producer_tracks
|
||
---
|
||
> self.incoming_camera_tracks: dict[str, aiortc.MediaStreamTrack] = dict()
|
||
> self.incoming_audio_tracks: list[aiortc.MediaStreamTrack] = []
|
||
> self.outgoing_video_tracks: list[aiortc.MediaStreamTrack] = video_producer_tracks
|
||
> self.outgoing_audio_tracks: list[aiortc.MediaStreamTrack] = audio_producer_tracks
|
||
42,43c43,44
|
||
< self.messaging_channel: Optional[aiortc.RTCDataChannel] = None
|
||
< self.incoming_message_handlers: List[MessageHandler] = []
|
||
---
|
||
> self.messaging_channel: aiortc.RTCDataChannel | None = None
|
||
> self.incoming_message_handlers: list[MessageHandler] = []
|
||
72c73
|
||
< def _find_trackless_transceiver(self, kind: str) -> Optional[aiortc.RTCRtpTransceiver]:
|
||
---
|
||
> def _find_trackless_transceiver(self, kind: str) -> aiortc.RTCRtpTransceiver | None:
|
||
99c100
|
||
< def _add_messaging_channel(self, channel: Optional[aiortc.RTCDataChannel] = None):
|
||
---
|
||
> def _add_messaging_channel(self, channel: aiortc.RTCDataChannel | None = None):
|
||
202c203
|
||
< self.expected_number_of_incoming_media != 0 and self.incoming_media_ready_event.is_set()
|
||
---
|
||
> (self.expected_number_of_incoming_media == 0 or self.incoming_media_ready_event.is_set())
|
||
215c216
|
||
< assert self.is_connected_and_ready
|
||
---
|
||
> assert self.is_connected_and_ready, "Stream is not connected/ready yet (make sure wait_for_connection was awaited)"
|
||
258c259
|
||
< def _probe_video_codecs(self) -> List[str]:
|
||
---
|
||
> def _probe_video_codecs(self) -> list[str]:
|
||
266c267
|
||
< def _override_incoming_video_codecs(self, remote_sdp: str, codecs: List[str]) -> str:
|
||
---
|
||
> def _override_incoming_video_codecs(self, remote_sdp: str, codecs: list[str]) -> str:
|
||
273c274
|
||
< preferred_codecs: List[aiortc.RTCRtpCodecParameters] = [c for c in m.rtp.codecs if c.mimeType in codec_mimes]
|
||
---
|
||
> preferred_codecs: list[aiortc.RTCRtpCodecParameters] = [c for c in m.rtp.codecs if c.mimeType in codec_mimes]
|
||
diff -r clearpilot/teleoprtc/tracks.py FrogPilot/teleoprtc/tracks.py
|
||
5c5
|
||
< from typing import Optional, Tuple, Any
|
||
---
|
||
> from typing import Any
|
||
15c15
|
||
< def parse_video_track_id(track_id: str) -> Tuple[str, str]:
|
||
---
|
||
> def parse_video_track_id(track_id: str) -> tuple[str, str]:
|
||
38c38
|
||
< self._start: Optional[float] = None
|
||
---
|
||
> self._start: float | None = None
|
||
56c56
|
||
< def codec_preference(self) -> Optional[str]:
|
||
---
|
||
> def codec_preference(self) -> str | None:
|
||
Only in FrogPilot/teleoprtc_repo/examples/face_detection: face_detection.py
|
||
Only in FrogPilot/teleoprtc_repo/examples/face_detection: README.md
|
||
Only in FrogPilot/teleoprtc_repo/examples/videostream_cli: cli.py
|
||
Only in FrogPilot/teleoprtc_repo/examples/videostream_cli: README.md
|
||
Only in FrogPilot/teleoprtc_repo/.github/workflows: release.yaml
|
||
Only in FrogPilot/teleoprtc_repo/.github/workflows: tests.yaml
|
||
Only in FrogPilot/teleoprtc_repo: .gitignore
|
||
Only in FrogPilot/teleoprtc_repo: LICENSE
|
||
Only in FrogPilot/teleoprtc_repo: .pre-commit-config.yaml
|
||
Only in FrogPilot/teleoprtc_repo: pyproject.toml
|
||
Only in FrogPilot/teleoprtc_repo: README.md
|
||
Only in FrogPilot/teleoprtc_repo/scripts: bump_tag.sh
|
||
Only in FrogPilot/teleoprtc_repo/scripts: publish_pypi.sh
|
||
Only in FrogPilot/teleoprtc_repo/teleoprtc: builder.py
|
||
Only in FrogPilot/teleoprtc_repo/teleoprtc: info.py
|
||
Only in FrogPilot/teleoprtc_repo/teleoprtc: __init__.py
|
||
Only in FrogPilot/teleoprtc_repo/teleoprtc: stream.py
|
||
Only in FrogPilot/teleoprtc_repo/teleoprtc: tracks.py
|
||
Only in FrogPilot/teleoprtc_repo/tests: test_info.py
|
||
Only in FrogPilot/teleoprtc_repo/tests: test_integration.py
|
||
Only in FrogPilot/teleoprtc_repo/tests: test_stream.py
|
||
Only in FrogPilot/teleoprtc_repo/tests: test_track.py
|
||
Only in FrogPilot/tinygrad_repo: compile.sh
|
||
Only in FrogPilot/tinygrad_repo: CONTRIBUTING.md
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno: disasm-a3xx.c
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno: .gitignore
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno: __init__.py
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno: instr-a3xx.h
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno: ir3.h
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno: README
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno: shader_enums.h
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno/util: bitscan.h
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno/util: bitset.h
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno/util: list.h
|
||
Only in FrogPilot/tinygrad_repo/disassemblers/adreno/util: macros.h
|
||
Only in FrogPilot/tinygrad_repo/docs: abstractions.py
|
||
Only in FrogPilot/tinygrad_repo/docs: adding_new_accelerators.md
|
||
Only in FrogPilot/tinygrad_repo/docs: DESIGNv2.md
|
||
Only in FrogPilot/tinygrad_repo/docs: env_vars.md
|
||
Only in FrogPilot/tinygrad_repo/docs: logo.png
|
||
Only in FrogPilot/tinygrad_repo/docs: quickstart.md
|
||
Only in FrogPilot/tinygrad_repo/docs: README.md
|
||
Only in FrogPilot/tinygrad_repo/docs/showcase: mnist_by_tinygrad.jpg
|
||
Only in FrogPilot/tinygrad_repo/docs/showcase: stable_diffusion_by_tinygrad.jpg
|
||
Only in FrogPilot/tinygrad_repo/docs/showcase: yolo_by_tinygrad.jpg
|
||
Only in FrogPilot/tinygrad_repo/docs/showcase: yolov8_showcase_image.png
|
||
Only in FrogPilot/tinygrad_repo/docs: showcase.md
|
||
Only in FrogPilot/tinygrad_repo: .editorconfig
|
||
Only in FrogPilot/tinygrad_repo/examples: benchmark_train_efficientnet.py
|
||
Only in FrogPilot/tinygrad_repo/examples: compile_efficientnet.py
|
||
Only in FrogPilot/tinygrad_repo/examples: compile_tensorflow.py
|
||
Only in FrogPilot/tinygrad_repo/examples: efficientnet.py
|
||
Only in FrogPilot/tinygrad_repo/examples: f16_w_uint32.py
|
||
Only in FrogPilot/tinygrad_repo/examples: gpt2.py
|
||
Only in FrogPilot/tinygrad_repo/examples: handcode_resnet50_opt.py
|
||
Only in FrogPilot/tinygrad_repo/examples: hlb_cifar10.py
|
||
Only in FrogPilot/tinygrad_repo/examples: index.html
|
||
Only in FrogPilot/tinygrad_repo/examples: __init__.py
|
||
Only in FrogPilot/tinygrad_repo/examples: llama.py
|
||
Only in FrogPilot/tinygrad_repo/examples: mask_rcnn.py
|
||
Only in FrogPilot/tinygrad_repo/examples/mlperf: helpers.py
|
||
Only in FrogPilot/tinygrad_repo/examples/mlperf: metrics.py
|
||
Only in FrogPilot/tinygrad_repo/examples/mlperf: model_eval.py
|
||
Only in FrogPilot/tinygrad_repo/examples/mlperf: model_spec.py
|
||
Only in FrogPilot/tinygrad_repo/examples/mlperf: model_train.py
|
||
Only in FrogPilot/tinygrad_repo/examples/mlperf: README
|
||
Only in FrogPilot/tinygrad_repo/examples: mnist_gan.py
|
||
Only in FrogPilot/tinygrad_repo/examples: serious_mnist.py
|
||
Only in FrogPilot/tinygrad_repo/examples: simple_conv_bn.py
|
||
Only in FrogPilot/tinygrad_repo/examples/sovits_helpers: preprocess.py
|
||
Only in FrogPilot/tinygrad_repo/examples: so_vits_svc.py
|
||
Only in FrogPilot/tinygrad_repo/examples: stable_diffusion.py
|
||
Only in FrogPilot/tinygrad_repo/examples: train_efficientnet.py
|
||
Only in FrogPilot/tinygrad_repo/examples: train_resnet.py
|
||
Only in FrogPilot/tinygrad_repo/examples: transformer.py
|
||
Only in FrogPilot/tinygrad_repo/examples/vgg7_helpers: waifu2x.py
|
||
Only in FrogPilot/tinygrad_repo/examples: vgg7.py
|
||
Only in FrogPilot/tinygrad_repo/examples: vit.py
|
||
Only in FrogPilot/tinygrad_repo/examples: vits.py
|
||
Only in FrogPilot/tinygrad_repo/examples/webgpu/stable_diffusion: compile.py
|
||
Only in FrogPilot/tinygrad_repo/examples/webgpu/stable_diffusion: f16_to_f32.js
|
||
Only in FrogPilot/tinygrad_repo/examples/webgpu/stable_diffusion: index.html
|
||
Only in FrogPilot/tinygrad_repo/examples: whisper.py
|
||
Only in FrogPilot/tinygrad_repo/examples: yolov3.py
|
||
Only in FrogPilot/tinygrad_repo/examples: yolov8-onnx.py
|
||
Only in FrogPilot/tinygrad_repo/examples: yolov8.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/1_build: coreml_ane.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/1_build: .gitignore
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/1_build: run.swift
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/1_build: test.mlmodel
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: ane.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: aneregs.json
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: compile.m
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: compile.mm
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: compile.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: dcompile.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: .gitignore
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: hwx_parse.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: min_uint8.weights
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: min.weights
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: model.espresso.weights
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: model.hwx.golden
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: net.additional.weights
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: net.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: broadcast.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: concat.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: gemm.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: goc.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: inputview.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: neuron.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: reshape.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: scaled.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/plists: sum.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: concat.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: convneuron.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: conv.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: convuint8.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: doubleconv.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: doubleconvrev.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: doubleconvsout.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: doubleneuron.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: gemm.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: goc.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: neuron.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: quadconv.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile/simple: reshape.plist
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: struct_recover.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/2_compile: twos.weights
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/3_run: build.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/3_run: entitlements.xml
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/3_run: h11ane.h
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/3_run: test.mm
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/amfi: new_patch.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane: aneregs
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: ane.mm
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: ane.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: aneregs.json
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: build.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: entitlements.xml
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: .gitignore
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: h11ane.h
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: sign_python.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/lib: testconv.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/ops: concat.hwx
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/ops: conv.hwx
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/ops: gemm.hwx
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/ops: relu.hwx
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/ops: sigmoid.hwx
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/ops: sum.hwx
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane: README.md
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane: README.old
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/ane/tinygrad: ops_ane.py
|
||
Only in FrogPilot/tinygrad_repo/extra/accel: MAPPING
|
||
Only in FrogPilot/tinygrad_repo/extra/accel: README
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/tpu/logs: tpu_driver.t1v-n-852cd0d5-w-0.taylor.log.INFO.20210619-062914.26926.gz
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/tpu: README.md
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/tpu/tfexample: libtpu_client.c
|
||
Only in FrogPilot/tinygrad_repo/extra/accel/tpu/tfexample: libtpu.h
|
||
Only in FrogPilot/tinygrad_repo/extra: archprobe.py
|
||
Only in FrogPilot/tinygrad_repo/extra/assembly: assembly_arm64.py
|
||
Only in FrogPilot/tinygrad_repo/extra/assembly: assembly_ptx.py
|
||
Only in FrogPilot/tinygrad_repo/extra/assembly: assembly.py
|
||
Only in FrogPilot/tinygrad_repo/extra/assembly: assembly_rdna.py
|
||
Only in FrogPilot/tinygrad_repo/extra: augment.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: coco.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: imagenet_download.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: imagenet.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: __init__.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: kits19.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: librispeech.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets/mnist: t10k-images-idx3-ubyte.gz
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets/mnist: t10k-labels-idx1-ubyte.gz
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets/mnist: train-images-idx3-ubyte.gz
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets/mnist: train-labels-idx1-ubyte.gz
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: openimages.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: preprocess_imagenet.py
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: sops.gz
|
||
Only in FrogPilot/tinygrad_repo/extra/datasets: squad.py
|
||
Only in FrogPilot/tinygrad_repo/extra/disk: .gitignore
|
||
Only in FrogPilot/tinygrad_repo/extra/disk: test.cc
|
||
Only in FrogPilot/tinygrad_repo/extra/dist: collectives.py
|
||
Only in FrogPilot/tinygrad_repo/extra/dist: __init__.py
|
||
Only in FrogPilot/tinygrad_repo/extra/dist: world.py
|
||
Only in FrogPilot/tinygrad_repo/extra: dump_cache.py
|
||
Only in FrogPilot/tinygrad_repo/extra: export_model.py
|
||
Only in FrogPilot/tinygrad_repo/extra/fastvits: conv1_reorder.cl
|
||
Only in FrogPilot/tinygrad_repo/extra/fastvits: fastvits_speed.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: amx.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: cuda_matmul.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: gemm.c
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: gemm.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: gemv_845.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: .gitignore
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: hip_matmul.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: metal_conv.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: metal_matmul.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: metal_matvec.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: simple_matmul.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: tf_gemm.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: torch_gemm.py
|
||
Only in FrogPilot/tinygrad_repo/extra/gemm: tvm_gemm.py
|
||
Only in FrogPilot/tinygrad_repo/extra: gradcheck.py
|
||
Only in FrogPilot/tinygrad_repo/extra: helpers.py
|
||
Only in FrogPilot/tinygrad_repo/extra: hip_wrapper.py
|
||
Only in FrogPilot/tinygrad_repo/extra/intel: benchmark_matmul.py
|
||
Only in FrogPilot/tinygrad_repo/extra/intel: .gitignore
|
||
Only in FrogPilot/tinygrad_repo/extra/intel: go.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/intel: joint_matrix_bfloat16.cpp
|
||
Only in FrogPilot/tinygrad_repo/extra/intel: README
|
||
Only in FrogPilot/tinygrad_repo/extra: introspection.py
|
||
Only in FrogPilot/tinygrad_repo/extra: lib_test_ast.py
|
||
Only in FrogPilot/tinygrad_repo/extra: lr_scheduler.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: extract_policynet.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: extract_sa_pairs.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: generate_dataset.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: get_action_space.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: helpers.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: pretrain_valuenet.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: rl.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: run_qnet.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: test_beam_search.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: test_net.py
|
||
Only in FrogPilot/tinygrad_repo/extra/optimization: test_time_linearizer.py
|
||
Only in FrogPilot/tinygrad_repo/extra/ptx: test.py
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm: .gitignore
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm/kernel_crashes: dump
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm/kernel_crashes: dump2
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm/kernel_crashes: dump3
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm/kernel_crashes: dump4
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm: NOTES
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm/rdna3: asm.py
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm/rdna3: prog.s
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm: rocm_clone.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm: rocm_from_scratch.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm: rocm_setup.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm/sniffer: build.sh
|
||
Only in FrogPilot/tinygrad_repo/extra/rocm/sniffer: sniff.cc
|
||
Only in FrogPilot/tinygrad_repo/extra: training.py
|
||
Only in FrogPilot/tinygrad_repo/extra/triton: test.py
|
||
Only in FrogPilot/tinygrad_repo: .flake8
|
||
Only in FrogPilot/tinygrad_repo/.github/workflows: benchmark.yml
|
||
Only in FrogPilot/tinygrad_repo/.github/workflows: python-publish.yml
|
||
Only in FrogPilot/tinygrad_repo/.github/workflows: szdiff.yml
|
||
Only in FrogPilot/tinygrad_repo/.github/workflows: test.yml
|
||
Only in FrogPilot/tinygrad_repo: .gitignore
|
||
Only in FrogPilot/tinygrad_repo: LICENSE
|
||
Only in FrogPilot/tinygrad_repo/models: bert.py
|
||
Only in FrogPilot/tinygrad_repo/models: convnext.py
|
||
Only in FrogPilot/tinygrad_repo/models: efficientnet.py
|
||
Only in FrogPilot/tinygrad_repo/models: mask_rcnn.py
|
||
Only in FrogPilot/tinygrad_repo/models: resnet.py
|
||
Only in FrogPilot/tinygrad_repo/models: retinanet.py
|
||
Only in FrogPilot/tinygrad_repo/models: rnnt.py
|
||
Only in FrogPilot/tinygrad_repo/models: transformer.py
|
||
Only in FrogPilot/tinygrad_repo/models: unet3d.py
|
||
Only in FrogPilot/tinygrad_repo/models: vit.py
|
||
Only in FrogPilot/tinygrad_repo: mypy.ini
|
||
Only in FrogPilot/tinygrad_repo/openpilot: compile.py
|
||
Only in FrogPilot/tinygrad_repo/openpilot: go.sh
|
||
Only in FrogPilot/tinygrad_repo: .pre-commit-config.yaml
|
||
Only in FrogPilot/tinygrad_repo: push_pypi.sh
|
||
Only in FrogPilot/tinygrad_repo: .pylintrc
|
||
Only in FrogPilot/tinygrad_repo: pytest.ini
|
||
Only in FrogPilot/tinygrad_repo: README.md
|
||
Only in FrogPilot/tinygrad_repo: rmso.sh
|
||
Only in FrogPilot/tinygrad_repo: ruff.toml
|
||
Only in FrogPilot/tinygrad_repo: run_multibackend.sh
|
||
Only in FrogPilot/tinygrad_repo: setup.py
|
||
Only in FrogPilot/tinygrad_repo: strip_whitespace.sh
|
||
Only in FrogPilot/tinygrad_repo: sz.py
|
||
Only in FrogPilot/tinygrad_repo/test: Dockerfile
|
||
Only in FrogPilot/tinygrad_repo/test/external/dist: test_collectives.py
|
||
Only in FrogPilot/tinygrad_repo/test/external/dist: test_world.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_copy_benchmark.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_llama_eval.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_model_benchmark.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_multi_gpu.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_osx_profiling.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_allocator_on_models.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_embedding.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_gpu_ast.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_image.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_jit_on_models.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_onnx_backend.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_optim.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_opt.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_speed_llama.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_uops_graphing.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_yolo.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: external_test_yolov8.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: fuzz_shapetracker.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: fuzz_symbolic.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: graph_batchnorm.py
|
||
Only in FrogPilot/tinygrad_repo/test/external: test_example.py
|
||
Only in FrogPilot/tinygrad_repo/test/extra: test_export_model.py
|
||
Only in FrogPilot/tinygrad_repo/test/extra: test_extra_helpers.py
|
||
Only in FrogPilot/tinygrad_repo/test/extra: test_lr_scheduler.py
|
||
Only in FrogPilot/tinygrad_repo/test/extra: test_utils.py
|
||
Only in FrogPilot/tinygrad_repo/test: helpers.py
|
||
Only in FrogPilot/tinygrad_repo/test: __init__.py
|
||
Only in FrogPilot/tinygrad_repo/test/models/efficientnet: car.jpg
|
||
Only in FrogPilot/tinygrad_repo/test/models/efficientnet: Chicken.jpg
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_bert.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_efficientnet.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_end2end.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_mnist.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_onnx.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_real_world.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_rnnt.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_train.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_waifu2x.py
|
||
Only in FrogPilot/tinygrad_repo/test/models: test_whisper.py
|
||
Only in FrogPilot/tinygrad_repo/test/models/waifu2x: input.png
|
||
Only in FrogPilot/tinygrad_repo/test/models/waifu2x: output.png
|
||
Only in FrogPilot/tinygrad_repo/test/models/whisper: test.wav
|
||
Only in FrogPilot/tinygrad_repo/test: test_allocators.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_assign.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_conv.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_conv_shapetracker.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_custom_function.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_dtype.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_gc.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_jit.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_kernel_cache.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_lazybuffer.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_lazyop.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_linearizer_failures.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_linearizer.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_net_speed.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_nn.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_ops.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_optim.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_randomness.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_schedule.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_search.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_specific_conv.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_speed_v_torch.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_symbolic_jit.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_symbolic_ops.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_symbolic_shapetracker.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_tensor.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_uops.py
|
||
Only in FrogPilot/tinygrad_repo/test: test_webgpu.js
|
||
Only in FrogPilot/tinygrad_repo/test: test_winograd.py
|
||
Only in FrogPilot/tinygrad_repo/test/unit: test_disk_cache.py
|
||
Only in FrogPilot/tinygrad_repo/test/unit: test_disk_tensor.py
|
||
Only in FrogPilot/tinygrad_repo/test/unit: test_flopcounter.py
|
||
Only in FrogPilot/tinygrad_repo/test/unit: test_helpers.py
|
||
Only in FrogPilot/tinygrad_repo/test/unit: test_shapetracker.py
|
||
Only in FrogPilot/tinygrad_repo/test/unit: test_shm_tensor.py
|
||
Only in FrogPilot/tinygrad_repo/test/unit: test_symbolic.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/renderer: cuda.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/renderer: llvmir.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/renderer: metal.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/renderer: triton.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/renderer: wgsl.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/runtime: ops_clang.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/runtime: ops_cuda.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/runtime: ops_hip.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/runtime: ops_llvm.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/runtime: ops_metal.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/runtime: ops_shm.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/runtime: ops_torch.py
|
||
Only in FrogPilot/tinygrad_repo/tinygrad/runtime: ops_webgpu.py
|
||
Only in FrogPilot/tinygrad_repo: .tokeignore
|
||
Only in FrogPilot/tools/bodyteleop: .gitignore
|
||
diff -r clearpilot/tools/bodyteleop/web.py FrogPilot/tools/bodyteleop/web.py
|
||
59c59
|
||
< stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
|
||
---
|
||
> capture_output=True, shell=True)
|
||
80c80
|
||
< with open(os.path.join(TELEOPDIR, "static", "index.html"), "r") as f:
|
||
---
|
||
> with open(os.path.join(TELEOPDIR, "static", "index.html")) as f:
|
||
Only in FrogPilot/tools/cabana/assets: assets.qrc
|
||
Only in FrogPilot/tools/cabana/assets: cabana-icon.png
|
||
Only in FrogPilot/tools/cabana/assets: .gitignore
|
||
Only in FrogPilot/tools/cabana: binaryview.cc
|
||
Only in FrogPilot/tools/cabana: binaryview.h
|
||
Only in FrogPilot/tools/cabana: cabana.cc
|
||
Only in FrogPilot/tools/cabana/chart: chart.cc
|
||
Only in FrogPilot/tools/cabana/chart: chart.h
|
||
Only in FrogPilot/tools/cabana/chart: chartswidget.cc
|
||
Only in FrogPilot/tools/cabana/chart: chartswidget.h
|
||
Only in FrogPilot/tools/cabana/chart: signalselector.cc
|
||
Only in FrogPilot/tools/cabana/chart: signalselector.h
|
||
Only in FrogPilot/tools/cabana/chart: sparkline.cc
|
||
Only in FrogPilot/tools/cabana/chart: sparkline.h
|
||
Only in FrogPilot/tools/cabana/chart: tiplabel.cc
|
||
Only in FrogPilot/tools/cabana/chart: tiplabel.h
|
||
Only in FrogPilot/tools/cabana: commands.cc
|
||
Only in FrogPilot/tools/cabana: commands.h
|
||
Only in FrogPilot/tools/cabana/dbc: dbc.cc
|
||
Only in FrogPilot/tools/cabana/dbc: dbcfile.cc
|
||
Only in FrogPilot/tools/cabana/dbc: dbcfile.h
|
||
Only in FrogPilot/tools/cabana/dbc: dbc.h
|
||
Only in FrogPilot/tools/cabana/dbc: dbcmanager.cc
|
||
Only in FrogPilot/tools/cabana/dbc: dbcmanager.h
|
||
Only in FrogPilot/tools/cabana/dbc: generate_dbc_json.py
|
||
Only in FrogPilot/tools/cabana: detailwidget.cc
|
||
Only in FrogPilot/tools/cabana: detailwidget.h
|
||
Only in FrogPilot/tools/cabana: .gitignore
|
||
Only in FrogPilot/tools/cabana: historylog.cc
|
||
Only in FrogPilot/tools/cabana: historylog.h
|
||
Only in FrogPilot/tools/cabana: mainwin.cc
|
||
Only in FrogPilot/tools/cabana: mainwin.h
|
||
Only in FrogPilot/tools/cabana: messageswidget.cc
|
||
Only in FrogPilot/tools/cabana: messageswidget.h
|
||
Only in FrogPilot/tools/cabana: README.md
|
||
Only in FrogPilot/tools/cabana: SConscript
|
||
Only in FrogPilot/tools/cabana: settings.cc
|
||
Only in FrogPilot/tools/cabana: settings.h
|
||
Only in FrogPilot/tools/cabana: signalview.cc
|
||
Only in FrogPilot/tools/cabana: signalview.h
|
||
Only in FrogPilot/tools/cabana/streams: abstractstream.cc
|
||
Only in FrogPilot/tools/cabana/streams: abstractstream.h
|
||
Only in FrogPilot/tools/cabana/streams: devicestream.cc
|
||
Only in FrogPilot/tools/cabana/streams: devicestream.h
|
||
Only in FrogPilot/tools/cabana/streams: livestream.cc
|
||
Only in FrogPilot/tools/cabana/streams: livestream.h
|
||
Only in FrogPilot/tools/cabana/streams: pandastream.cc
|
||
Only in FrogPilot/tools/cabana/streams: pandastream.h
|
||
Only in FrogPilot/tools/cabana/streams: replaystream.cc
|
||
Only in FrogPilot/tools/cabana/streams: replaystream.h
|
||
Only in FrogPilot/tools/cabana/streams: socketcanstream.cc
|
||
Only in FrogPilot/tools/cabana/streams: socketcanstream.h
|
||
Only in FrogPilot/tools/cabana: streamselector.cc
|
||
Only in FrogPilot/tools/cabana: streamselector.h
|
||
Only in FrogPilot/tools/cabana/tests: test_cabana.cc
|
||
Only in FrogPilot/tools/cabana/tests: test_runner.cc
|
||
Only in FrogPilot/tools/cabana/tools: findsignal.cc
|
||
Only in FrogPilot/tools/cabana/tools: findsignal.h
|
||
Only in FrogPilot/tools/cabana/tools: findsimilarbits.cc
|
||
Only in FrogPilot/tools/cabana/tools: findsimilarbits.h
|
||
Only in FrogPilot/tools/cabana/utils: export.cc
|
||
Only in FrogPilot/tools/cabana/utils: export.h
|
||
Only in FrogPilot/tools/cabana/utils: util.cc
|
||
Only in FrogPilot/tools/cabana/utils: util.h
|
||
Only in FrogPilot/tools/cabana: videowidget.cc
|
||
Only in FrogPilot/tools/cabana: videowidget.h
|
||
Only in FrogPilot/tools/camerastream: compressed_vipc.py
|
||
Only in FrogPilot/tools/camerastream: README.md
|
||
Only in FrogPilot/tools/car_porting: auto_fingerprint.py
|
||
Only in FrogPilot/tools/car_porting/examples: ford_vin_fingerprint.ipynb
|
||
Only in FrogPilot/tools/car_porting/examples: subaru_fuzzy_fingerprint.ipynb
|
||
Only in FrogPilot/tools/car_porting/examples: subaru_long_accel.ipynb
|
||
Only in FrogPilot/tools/car_porting/examples: subaru_steer_temp_fault.ipynb
|
||
Only in FrogPilot/tools/car_porting: README.md
|
||
Only in FrogPilot/tools/car_porting: test_car_model.py
|
||
Only in FrogPilot/tools: CTF.md
|
||
Only in FrogPilot/tools: install_python_dependencies.sh
|
||
Only in FrogPilot/tools: install_ubuntu_dependencies.sh
|
||
Only in FrogPilot/tools/latencylogger: latency_logger.py
|
||
Only in FrogPilot/tools/latencylogger: README.md
|
||
diff -r clearpilot/tools/lib/auth.py FrogPilot/tools/lib/auth.py
|
||
29c29
|
||
< from typing import Any, Dict
|
||
---
|
||
> from typing import Any
|
||
39c39
|
||
< query_params: Dict[str, Any] = {}
|
||
---
|
||
> query_params: dict[str, Any] = {}
|
||
diff -r clearpilot/tools/lib/azure_container.py FrogPilot/tools/lib/azure_container.py
|
||
5c5
|
||
< from typing import IO, Union
|
||
---
|
||
> from typing import IO
|
||
60c60
|
||
< def upload_bytes(self, data: Union[bytes, IO], blob_name: str) -> str:
|
||
---
|
||
> def upload_bytes(self, data: bytes | IO, blob_name: str) -> str:
|
||
72c72
|
||
< def upload_file(self, path: Union[str, os.PathLike], blob_name: str) -> str:
|
||
---
|
||
> def upload_file(self, path: str | os.PathLike, blob_name: str) -> str:
|
||
diff -r clearpilot/tools/lib/bootlog.py FrogPilot/tools/lib/bootlog.py
|
||
3d2
|
||
< from typing import List, Optional
|
||
47c46
|
||
< def get_bootlog_from_id(bootlog_id: str) -> Optional[Bootlog]:
|
||
---
|
||
> def get_bootlog_from_id(bootlog_id: str) -> Bootlog | None:
|
||
55c54
|
||
< def get_bootlogs(dongle_id: str) -> List[Bootlog]:
|
||
---
|
||
> def get_bootlogs(dongle_id: str) -> list[Bootlog]:
|
||
diff -r clearpilot/tools/lib/helpers.py FrogPilot/tools/lib/helpers.py
|
||
12,14c12,14
|
||
< LOG_ID = r'(?P<log_id>(?:{}|{}))'.format(TIMESTAMP, LOG_ID_V2)
|
||
< ROUTE_NAME = r'(?P<route_name>{}[|_/]{})'.format(DONGLE_ID, LOG_ID)
|
||
< SEGMENT_NAME = r'{}(?:--|/)(?P<segment_num>[0-9]+)'.format(ROUTE_NAME)
|
||
---
|
||
> LOG_ID = fr'(?P<log_id>(?:{TIMESTAMP}|{LOG_ID_V2}))'
|
||
> ROUTE_NAME = fr'(?P<route_name>{DONGLE_ID}[|_/]{LOG_ID})'
|
||
> SEGMENT_NAME = fr'{ROUTE_NAME}(?:--|/)(?P<segment_num>[0-9]+)'
|
||
17,18c17,18
|
||
< SLICE = r'(?P<start>{})?:?(?P<end>{})?:?(?P<step>{})?'.format(INDEX, INDEX, INDEX)
|
||
< SEGMENT_RANGE = r'{}(?:(--|/)(?P<slice>({})))?(?:/(?P<selector>([qras])))?'.format(ROUTE_NAME, SLICE)
|
||
---
|
||
> SLICE = fr'(?P<start>{INDEX})?:?(?P<end>{INDEX})?:?(?P<step>{INDEX})?'
|
||
> SEGMENT_RANGE = fr'{ROUTE_NAME}(?:(--|/)(?P<slice>({SLICE})))?(?:/(?P<selector>([qras])))?'
|
||
22,23c22,23
|
||
< EXPLORER_FILE = r'^(?P<segment_name>{})--(?P<file_name>[a-z]+\.[a-z0-9]+)$'.format(SEGMENT_NAME)
|
||
< OP_SEGMENT_DIR = r'^(?P<segment_name>{})$'.format(SEGMENT_NAME)
|
||
---
|
||
> EXPLORER_FILE = fr'^(?P<segment_name>{SEGMENT_NAME})--(?P<file_name>[a-z]+\.[a-z0-9]+)$'
|
||
> OP_SEGMENT_DIR = fr'^(?P<segment_name>{SEGMENT_NAME})$'
|
||
diff -r clearpilot/tools/lib/live_logreader.py FrogPilot/tools/lib/live_logreader.py
|
||
2d1
|
||
< from typing import List
|
||
11c10
|
||
< def raw_live_logreader(services: List[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> RawLogIterable:
|
||
---
|
||
> def raw_live_logreader(services: list[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> RawLogIterable:
|
||
28c27
|
||
< def live_logreader(services: List[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> LogIterable:
|
||
---
|
||
> def live_logreader(services: list[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> LogIterable:
|
||
diff -r clearpilot/tools/lib/logreader.py FrogPilot/tools/lib/logreader.py
|
||
14c14
|
||
< from typing import Callable, Dict, Iterable, Iterator, List, Optional, Type
|
||
---
|
||
> from collections.abc import Callable, Iterable, Iterator
|
||
24c24
|
||
< LogMessage = Type[capnp._DynamicStructReader]
|
||
---
|
||
> LogMessage = type[capnp._DynamicStructReader]
|
||
79,80c79,80
|
||
< LogPath = Optional[str]
|
||
< LogPaths = List[LogPath]
|
||
---
|
||
> LogPath = str | None
|
||
> LogPaths = list[LogPath]
|
||
92c92
|
||
< if any(rlog is None or not valid_file(rlog) for rlog in rlog_paths):
|
||
---
|
||
> if any(rlog is None or not valid_file(rlog) for rlog in rlog_paths) and all(qlog is not None and valid_file(qlog) for qlog in qlog_paths):
|
||
173c173
|
||
< SOURCES: List[Source] = [internal_source, openpilotci_source, comma_api_source, comma_car_segments_source,]
|
||
---
|
||
> SOURCES: list[Source] = [internal_source, openpilotci_source, comma_api_source, comma_car_segments_source,]
|
||
174a175,183
|
||
>
|
||
> # for automatic fallback modes, auto_source needs to first check if rlogs exist for any source
|
||
> if mode in [ReadMode.AUTO, ReadMode.AUTO_INTERACTIVE]:
|
||
> for source in SOURCES:
|
||
> try:
|
||
> return check_source(source, sr, ReadMode.RLOG)
|
||
> except Exception:
|
||
> pass
|
||
>
|
||
215c224
|
||
< def _parse_identifiers(self, identifier: str | List[str]):
|
||
---
|
||
> def _parse_identifiers(self, identifier: str | list[str]):
|
||
237c246
|
||
< def __init__(self, identifier: str | List[str], default_mode: ReadMode = ReadMode.RLOG,
|
||
---
|
||
> def __init__(self, identifier: str | list[str], default_mode: ReadMode = ReadMode.RLOG,
|
||
246c255
|
||
< self.__lrs: Dict[int, _LogFileReader] = {}
|
||
---
|
||
> self.__lrs: dict[int, _LogFileReader] = {}
|
||
251c260
|
||
< self.__lrs[i] = _LogFileReader(self.logreader_identifiers[i])
|
||
---
|
||
> self.__lrs[i] = _LogFileReader(self.logreader_identifiers[i], sort_by_time=self.sort_by_time, only_union_types=self.only_union_types)
|
||
diff -r clearpilot/tools/lib/README.md FrogPilot/tools/lib/README.md
|
||
37c37
|
||
< We also support a new format called a "segment range", where you can specify which segments from a route to load.
|
||
---
|
||
> We also support a new format called a "segment range":
|
||
39c39,44
|
||
< ```python
|
||
---
|
||
> ```
|
||
> 344c5c15b34f2d8a / 2024-01-03--09-37-12 / 2:6 / q
|
||
> [ dongle id ] [ timestamp ] [ selector ] [ query type]
|
||
> ```
|
||
>
|
||
> you can specify which segments from a route to load
|
||
40a46
|
||
> ```python
|
||
diff -r clearpilot/tools/lib/route.py FrogPilot/tools/lib/route.py
|
||
7c7
|
||
< from typing import Optional, cast
|
||
---
|
||
> from typing import cast
|
||
234c234
|
||
< def data_dir(self) -> Optional[str]: return self._data_dir
|
||
---
|
||
> def data_dir(self) -> str | None: return self._data_dir
|
||
266a267,270
|
||
> def log_id(self) -> str:
|
||
> return self.m.group("log_id")
|
||
>
|
||
> @property
|
||
294c298
|
||
< return f"{self.dongle_id}/{self.timestamp}" + (f"/{self.slice}" if self.slice else "") + (f"/{self.selector}" if self.selector else "")
|
||
---
|
||
> return f"{self.dongle_id}/{self.log_id}" + (f"/{self.slice}" if self.slice else "") + (f"/{self.selector}" if self.selector else "")
|
||
diff -r clearpilot/tools/lib/tests/test_caching.py FrogPilot/tools/lib/tests/test_caching.py
|
||
4a5,6
|
||
> import shutil
|
||
> import socket
|
||
8,9c10,11
|
||
< from openpilot.selfdrive.athena.tests.helpers import with_http_server
|
||
<
|
||
---
|
||
> from openpilot.selfdrive.test.helpers import with_http_server
|
||
> from openpilot.system.hardware.hw import Paths
|
||
18c20
|
||
< self.send_response(200, b'1234')
|
||
---
|
||
> self.send_response(206 if "Range" in self.headers else 200, b'1234')
|
||
35a38,65
|
||
>
|
||
> @with_caching_server
|
||
> def test_pipeline_defaults(self, host):
|
||
> # TODO: parameterize the defaults so we don't rely on hard-coded values in xx
|
||
>
|
||
> self.assertEqual(URLFile.pool_manager().pools._maxsize, 10) # PoolManager num_pools param
|
||
> pool_manager_defaults = {
|
||
> "maxsize": 100,
|
||
> "socket_options": [(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),],
|
||
> }
|
||
> for k, v in pool_manager_defaults.items():
|
||
> self.assertEqual(URLFile.pool_manager().connection_pool_kw.get(k), v)
|
||
>
|
||
> retry_defaults = {
|
||
> "total": 5,
|
||
> "backoff_factor": 0.5,
|
||
> "status_forcelist": [409, 429, 503, 504],
|
||
> }
|
||
> for k, v in retry_defaults.items():
|
||
> self.assertEqual(getattr(URLFile.pool_manager().connection_pool_kw["retries"], k), v)
|
||
>
|
||
> # ensure caching off by default and cache dir doesn't get created
|
||
> os.environ.pop("FILEREADER_CACHE", None)
|
||
> if os.path.exists(Paths.download_cache_root()):
|
||
> shutil.rmtree(Paths.download_cache_root())
|
||
> URLFile(f"{host}/test.txt").get_length()
|
||
> URLFile(f"{host}/test.txt").read()
|
||
> self.assertEqual(os.path.exists(Paths.download_cache_root()), False)
|
||
diff -r clearpilot/tools/lib/tests/test_comma_car_segments.py FrogPilot/tools/lib/tests/test_comma_car_segments.py
|
||
1,2c1
|
||
<
|
||
<
|
||
---
|
||
> import pytest
|
||
10a10
|
||
> @pytest.mark.skip(reason="huggingface is flaky, run this test manually to check for issues")
|
||
diff -r clearpilot/tools/lib/tests/test_logreader.py FrogPilot/tools/lib/tests/test_logreader.py
|
||
1a2
|
||
> import capnp
|
||
13a15
|
||
> from cereal import log as capnp_log
|
||
217a220,256
|
||
>
|
||
> @pytest.mark.slow
|
||
> def test_sort_by_time(self):
|
||
> msgs = list(LogReader(f"{TEST_ROUTE}/0/q"))
|
||
> self.assertNotEqual(msgs, sorted(msgs, key=lambda m: m.logMonoTime))
|
||
>
|
||
> msgs = list(LogReader(f"{TEST_ROUTE}/0/q", sort_by_time=True))
|
||
> self.assertEqual(msgs, sorted(msgs, key=lambda m: m.logMonoTime))
|
||
>
|
||
> def test_only_union_types(self):
|
||
> with tempfile.NamedTemporaryFile() as qlog:
|
||
> # write valid Event messages
|
||
> num_msgs = 100
|
||
> with open(qlog.name, "wb") as f:
|
||
> f.write(b"".join(capnp_log.Event.new_message().to_bytes() for _ in range(num_msgs)))
|
||
>
|
||
> msgs = list(LogReader(qlog.name))
|
||
> self.assertEqual(len(msgs), num_msgs)
|
||
> [m.which() for m in msgs]
|
||
>
|
||
> # append non-union Event message
|
||
> event_msg = capnp_log.Event.new_message()
|
||
> non_union_bytes = bytearray(event_msg.to_bytes())
|
||
> non_union_bytes[event_msg.total_size.word_count * 8] = 0xff # set discriminant value out of range using Event word offset
|
||
> with open(qlog.name, "ab") as f:
|
||
> f.write(non_union_bytes)
|
||
>
|
||
> # ensure new message is added, but is not a union type
|
||
> msgs = list(LogReader(qlog.name))
|
||
> self.assertEqual(len(msgs), num_msgs + 1)
|
||
> with self.assertRaises(capnp.KjException):
|
||
> [m.which() for m in msgs]
|
||
>
|
||
> # should not be added when only_union_types=True
|
||
> msgs = list(LogReader(qlog.name, only_union_types=True))
|
||
> self.assertEqual(len(msgs), num_msgs)
|
||
> [m.which() for m in msgs]
|
||
diff -r clearpilot/tools/lib/vidindex.py FrogPilot/tools/lib/vidindex.py
|
||
6d5
|
||
< from typing import Tuple
|
||
123c122
|
||
< def get_ue(dat: bytes, start_idx: int, skip_bits: int) -> Tuple[int, int]:
|
||
---
|
||
> def get_ue(dat: bytes, start_idx: int, skip_bits: int) -> tuple[int, int]:
|
||
187c186
|
||
< def get_hevc_slice_type(dat: bytes, nal_unit_start: int, nal_unit_type: HevcNalUnitType) -> Tuple[int, bool]:
|
||
---
|
||
> def get_hevc_slice_type(dat: bytes, nal_unit_start: int, nal_unit_type: HevcNalUnitType) -> tuple[int, bool]:
|
||
262c261
|
||
< def hevc_index(hevc_file_name: str, allow_corrupt: bool=False) -> Tuple[list, int, bytes]:
|
||
---
|
||
> def hevc_index(hevc_file_name: str, allow_corrupt: bool=False) -> tuple[list, int, bytes]:
|
||
Only in FrogPilot/tools: mac_setup.sh
|
||
Only in FrogPilot/tools/plotjuggler: .gitignore
|
||
Only in FrogPilot/tools/plotjuggler: juggle.py
|
||
Only in FrogPilot/tools/plotjuggler/layouts: camera-timings.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: CAN-bus-debug.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: can-states.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: controls_mismatch_debug.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: demo.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: gps_vs_llk.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: longitudinal.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: max-torque-debug.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: system_lag_debug.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: thermal_debug.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: torque-controller.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: tuning.xml
|
||
Only in FrogPilot/tools/plotjuggler/layouts: ublox-debug.xml
|
||
Only in FrogPilot/tools/plotjuggler: README.md
|
||
Only in FrogPilot/tools/plotjuggler: test_plotjuggler.py
|
||
Only in FrogPilot/tools/profiling/clpeak: build.sh
|
||
Only in FrogPilot/tools/profiling/clpeak: .gitignore
|
||
Only in FrogPilot/tools/profiling/clpeak: no_print.patch
|
||
Only in FrogPilot/tools/profiling/clpeak: run_continuously.patch
|
||
Only in FrogPilot/tools/profiling: ftrace.sh
|
||
Only in FrogPilot/tools/profiling/palanteer: .gitignore
|
||
Only in FrogPilot/tools/profiling/palanteer: setup.sh
|
||
Only in FrogPilot/tools/profiling/perfetto: build.sh
|
||
Only in FrogPilot/tools/profiling/perfetto: copy.sh
|
||
Only in FrogPilot/tools/profiling/perfetto: .gitignore
|
||
Only in FrogPilot/tools/profiling/perfetto: record.sh
|
||
Only in FrogPilot/tools/profiling/perfetto: server.sh
|
||
Only in FrogPilot/tools/profiling/perfetto: traces.sh
|
||
Only in FrogPilot/tools/profiling/py-spy: profile.sh
|
||
Only in FrogPilot/tools/profiling/snapdragon: .gitignore
|
||
Only in FrogPilot/tools/profiling/snapdragon: README.md
|
||
Only in FrogPilot/tools/profiling/snapdragon: setup-agnos.sh
|
||
Only in FrogPilot/tools/profiling/snapdragon: setup-profiler.sh
|
||
Only in FrogPilot/tools/profiling: watch-irqs.sh
|
||
Only in FrogPilot/tools: README.md
|
||
Only in FrogPilot/tools/replay: camera.cc
|
||
Only in FrogPilot/tools/replay: camera.h
|
||
Only in FrogPilot/tools/replay: can_replay.py
|
||
Only in FrogPilot/tools/replay: consoleui.cc
|
||
Only in FrogPilot/tools/replay: consoleui.h
|
||
Only in FrogPilot/tools/replay: filereader.cc
|
||
Only in FrogPilot/tools/replay: filereader.h
|
||
Only in FrogPilot/tools/replay: framereader.cc
|
||
Only in FrogPilot/tools/replay: framereader.h
|
||
Only in FrogPilot/tools/replay: .gitignore
|
||
Only in FrogPilot/tools/replay: __init__.py
|
||
Only in FrogPilot/tools/replay/lib: __init__.py
|
||
Only in FrogPilot/tools/replay/lib: ui_helpers.py
|
||
Only in FrogPilot/tools/replay: logreader.cc
|
||
Only in FrogPilot/tools/replay: logreader.h
|
||
Only in FrogPilot/tools/replay: main.cc
|
||
Only in FrogPilot/tools/replay: README.md
|
||
Only in FrogPilot/tools/replay: replay.cc
|
||
Only in FrogPilot/tools/replay: replay.h
|
||
Only in FrogPilot/tools/replay: route.cc
|
||
Only in FrogPilot/tools/replay: route.h
|
||
Only in FrogPilot/tools/replay: SConscript
|
||
Only in FrogPilot/tools/replay/tests: test_replay.cc
|
||
Only in FrogPilot/tools/replay/tests: test_runner.cc
|
||
Only in FrogPilot/tools/replay: ui.py
|
||
Only in FrogPilot/tools/replay: unlog_ci_segment.py
|
||
Only in FrogPilot/tools/replay: util.cc
|
||
Only in FrogPilot/tools/replay: util.h
|
||
Only in FrogPilot/tools/scripts: fetch_image_from_route.py
|
||
Only in FrogPilot/tools/scripts: save_ubloxraw_stream.py
|
||
Only in FrogPilot/tools/scripts: setup_ssh_keys.py
|
||
Only in FrogPilot/tools/serial: connect.sh
|
||
Only in FrogPilot/tools/serial: README.md
|
||
Only in FrogPilot/tools/sim/bridge: common.py
|
||
Only in FrogPilot/tools/sim/bridge: __init__.py
|
||
Only in FrogPilot/tools/sim/bridge/metadrive: metadrive_bridge.py
|
||
Only in FrogPilot/tools/sim/bridge/metadrive: metadrive_common.py
|
||
Only in FrogPilot/tools/sim/bridge/metadrive: metadrive_process.py
|
||
Only in FrogPilot/tools/sim/bridge/metadrive: metadrive_world.py
|
||
Only in FrogPilot/tools/sim: build_container.sh
|
||
Only in FrogPilot/tools/sim: Dockerfile.sim
|
||
Only in FrogPilot/tools/sim: Dockerfile.sim_nvidia
|
||
Only in FrogPilot/tools/sim: __init__.py
|
||
Only in FrogPilot/tools/sim: launch_openpilot.sh
|
||
Only in FrogPilot/tools/sim/lib: camerad.py
|
||
Only in FrogPilot/tools/sim/lib: common.py
|
||
Only in FrogPilot/tools/sim/lib: __init__.py
|
||
Only in FrogPilot/tools/sim/lib: keyboard_ctrl.py
|
||
Only in FrogPilot/tools/sim/lib: manual_ctrl.py
|
||
Only in FrogPilot/tools/sim/lib: simulated_car.py
|
||
Only in FrogPilot/tools/sim/lib: simulated_sensors.py
|
||
Only in FrogPilot/tools/sim: README.md
|
||
Only in FrogPilot/tools/sim: rgb_to_nv12.cl
|
||
Only in FrogPilot/tools/sim: run_bridge.py
|
||
Only in FrogPilot/tools/sim/scenarios/metadrive: stay_in_lane.py
|
||
Only in FrogPilot/tools/sim: start_openpilot_docker.sh
|
||
Only in FrogPilot/tools/sim/tests: __init__.py
|
||
Only in FrogPilot/tools/sim/tests: test_metadrive_bridge.py
|
||
Only in FrogPilot/tools/sim/tests: test_sim_bridge.py
|
||
Only in FrogPilot/tools/ssh: id_rsa
|
||
Only in FrogPilot/tools/ssh: README.md
|
||
Only in FrogPilot/tools/tuning: measure_steering_accuracy.py
|
||
Only in FrogPilot/tools: ubuntu_setup.sh
|
||
Only in FrogPilot/tools/webcam: camerad.py
|
||
Only in FrogPilot/tools/webcam: camera.py
|
||
Only in FrogPilot/tools/webcam: Dockerfile
|
||
Only in FrogPilot/tools/webcam: README.md
|
||
Only in FrogPilot/tools/webcam: start_camerad.sh
|
||
Only in FrogPilot/tools/zookeeper: check_consumption.py
|
||
Only in FrogPilot/tools/zookeeper: disable.py
|
||
Only in FrogPilot/tools/zookeeper: enable_and_wait.py
|
||
Only in FrogPilot/tools/zookeeper: ignition.py
|
||
Only in FrogPilot/tools/zookeeper: __init__.py
|
||
Only in FrogPilot/tools/zookeeper: power_monitor.py
|
||
Only in FrogPilot/tools/zookeeper: test_zookeeper.py
|
||
Only in clearpilot/: update_and_launch.sh
|
||
Only in clearpilot/: update.sh
|
||
Only in FrogPilot/.vscode: extensions.json
|
||
Only in FrogPilot/.vscode: launch.json
|
||
diff -r clearpilot/.vscode/settings.json FrogPilot/.vscode/settings.json
|
||
1a2,10
|
||
> "editor.tabSize": 2,
|
||
> "editor.insertSpaces": true,
|
||
> "editor.renderWhitespace": "trailing",
|
||
> "files.trimTrailingWhitespace": true,
|
||
> "search.exclude": {
|
||
> "**/.git": true,
|
||
> "**/.venv": true,
|
||
> "**/__pycache__": true
|
||
> },
|
||
3,5c12,14
|
||
< "selfdrive/": true,
|
||
< "openpilot/system/": true,
|
||
< "tools/": true
|
||
---
|
||
> "**/.git": true,
|
||
> "**/.venv": true,
|
||
> "**/__pycache__": true
|
||
7,11c16,26
|
||
< "search.exclude": {
|
||
< "selfdrive/": true,
|
||
< "openpilot/system/": true,
|
||
< "tools/": true
|
||
< }
|
||
---
|
||
> "python.analysis.exclude": [
|
||
> "**/.git",
|
||
> "**/.venv",
|
||
> "**/__pycache__",
|
||
> // exclude directories that should be using the symlinked version
|
||
> "common/**",
|
||
> "selfdrive/**",
|
||
> "system/**",
|
||
> "third_party/**",
|
||
> "tools/**",
|
||
> ]
|