Compare commits

...

11 Commits

Author SHA1 Message Date
Rick Lan
05a127a38e fix hash 2020-11-10 16:38:47 +10:00
Rick Lan
580a5f5265 update ota/recovery url 2020-11-10 12:40:06 +10:00
Rick Lan
099e257c0f Merge branch 'devel-i18n' into 0.7.8-i18n 2020-09-23 12:17:29 +10:00
Rick Lan
6426e62171 dragonpilot 0.7.8.2
========================
* Fixed 5+ minutes boot time issue when there is no internet connection.
* Used dp server for error reporting.
* updated service uses gitee IP address instead.
2020-09-23 12:15:50 +10:00
Rick Lan
d8c8f2bd65 dragonpilot 0.7.8
========================
* Based on latest openpilot 0.7.8 devel.
* Added "Reset DP Settings" button. (Thanks to @LOVEChen)
* Alert messages changed to concept UI alike design.
* Added ability to execute reset_update.sh when press "Exit" button once manager returned errors.
* Added ko-KR translation.
* Added Honda Jade support. (Thanks to @lijunhao731)
* Fixed ui.cc memory out of bound issue. (Thanks to @piggy)
* gpxd now store in zip format.
* Force disabled DOS hardware check in panda.
2020-09-22 10:03:53 +10:00
Rick Lan
657e180ba3 dragonpilot 0.7.8.1
========================
* Added ko-KR translation.
* Added Honda Jade support. (Thanks to @lijunhao731)
* Fixed ui.cc memory out of bound issue. (Thanks to @piggy)
* gpxd now store in zip format.
* Force disabled DOS hardware check in panda.
2020-09-21 13:38:49 +10:00
Rick Lan
27e12ccad7 dragonpilot 0.7.8.0
========================
* Based on latest openpilot 0.7.8 devel.
* Added "Reset DP Settings" button. (Thanks to @LOVEChen)
* Alert messages changed to concept UI alike design.
* Added ability to execute reset_update.sh when press "Exit" button once manager returned errors.
2020-08-31 12:42:57 +10:00
Rick Lan
899f68dabf dragonpilot 0.7.7.3
========================
* Fixed steering monitor timer param.
* Fixed screen frozen issue when "screen off while driving" toggle is enabled. (Thanks to @salmankhan, @stevej99, @bobbydough)
* Re-added Dev Mini UI. (Thanks to @Ninjaa)
* Added ability (dp_reset_live_param_on_start) to reset LiveParameters on each start. (Thanks @eisenheim)
* Fixed error cuased by enabling both dp_toyota_zss and dp_lqr at the same time. (Thanks to @bobbydough)
* Added ability (dp_gpxd) to export GPS track into GPX files (/sdcard/gpx_logs/). (Thanks to @mageymoo1)
* Used lane width estimate value from Germany. (Thanks to @arne182)
2020-08-21 11:51:42 +10:00
Rick Lan
fc73a3b5ee dragonpilot 0.7.7.2
========================
* Added d_poly offset. (Thanks to @ShaneSmiskol)
* Added ZSS support. (Thanks to @bobbydough, @WilliamPrius for recommendation, @bobbydough for testing)
* Added error logs to /sdcard/crash_logs/ (Special Thanks to @ShaneSmiskol)
* Added LQR Controller toggle to settings.
2020-08-11 14:56:03 +10:00
Rick Lan
84b6ee1947 dragonpilot 0.7.7.1
========================
* Added C2 quiet fan mode. (Thanks to @dingliangxue)
* Added "Assisted Lane Change Min Engage Speed" and "Auto Lane Change Min Engage Speed" settings.
* Re-added Dev UI. (Thanks to @Kent)
* Added "dp_lqr" setting to force enable lqr tuning from RAV4. (Thanks to eisenheim)
2020-08-02 17:59:37 +10:00
Rick Lan
1095df55ac dragonpilot 0.7.7.0
========================
* Based on latest openpilot 0.7.7 devel.
* When Manager failed, display IP address. (Thanks to  @dingliangxue)
* Re-added sr learner toggle.
* Re-added Accel Profile toggle.
* Added Toyota to override lowerest cruise speed. (Thanks to @Mojo)
* Added BSM indicator to UI. (Thanks to @wabes)
* re-added Slow On Curve functionality. (Thanks to @Mojo)
2020-07-24 14:59:45 +10:00
218 changed files with 14606 additions and 3257 deletions

541
CHANGELOGS-DEV.md Normal file
View File

@@ -0,0 +1,541 @@
dragonpilot 0.7.8.2
========================
* 修正在沒網路的情況下,開機超過五分鐘的問題。
* Fixed 5+ minutes boot time issue when there is no internet connection.
* 錯誤回傳改使用 dp 的主機。
* Used dp server for error reporting.
* 更新服務改使用 gitee 的 IP 檢查連線狀態。
* updated service uses gitee IP address instead.
dragonpilot 0.7.8.1
========================
* 加入 ko-KR 翻譯。
* Added ko-KR translation.
* 加入 Honda Jade 支援。(感謝 @李俊灝)
* Added Honda Jade support. (Thanks to @lijunhao731)
* 修正 ui.cc 內存越界的問題。(感謝 @piggy 提供)
* Fixed ui.cc memory out of bound issue. (Thanks to @piggy)
* gpxd 記錄改自動存成 zip 格式。
* gpxd now store in zip format.
* 強制關閉 panda 檢查 DOS 硬體。
* Force disabled DOS hardware check in panda.
dragonpilot 0.7.8.0
========================
* 基於最新 openpilot 0.7.8 devel.
* Based on latest openpilot 0.7.8 devel.
* 加入重置 DP 設定按鈕。(感謝 @LOVEChen 建議)
* Added "Reset DP Settings" button. (Thanks to @LOVEChen)
* 將警示訊息更改為類似於概念 UI 的設計。
* Alert messages changed to concept UI alike design.
* 當 manager 出現錯誤後,按 Exit 按鈕會執行 reset_update 腳本。
* Added ability to execute reset_update.sh when press "Exit" button once manager returned errors.
dragonpilot 0.7.7.3
========================
* 修正方向盤監控。
* Fixed steering monitor timer param.
* 修正行駛時關閉畫面導致當機的錯誤。(感謝 @salmankhan, @stevej99, @bobbydough 回報)
* Fixed screen frozen issue when "screen off while driving" toggle is enabled. (Thanks to @salmankhan, @stevej99, @bobbydough)
* 加回 Dev Mini UI 開關。(感謝 @Ninjaa 建議)
* Re-added Dev Mini UI. (Thanks to @Ninjaa)
* 新增 (dp_reset_live_parameters_on_start) 每次發車重設 LiveParameters 值。(感謝 @eisenheim)
* Added ability (dp_reset_live_param_on_start) to reset LiveParameters on each start. (Thanks @eisenheim)
* 修正同時開啟 dp_toyota_zss 和 dp_lqr 產生的錯誤。(感謝 @bobbydough)
* Fixed error cuased by enabling both dp_toyota_zss and dp_lqr at the same time. (Thanks to @bobbydough)
* 新增 (dp_gpxd) 將 GPS 軌跡導出至 GPX 格式 (/sdcard/gpx_logs/)的功能。 (感謝 @mageymoo1
* Added ability (dp_gpxd) to export GPS track into GPX files (/sdcard/gpx_logs/). (Thanks to @mageymoo1)
* 使用德國的車道寬度估算值。 (感謝 @arne182
* Used lane width estimate value from Germany. (Thanks to @arne182)
dragonpilot 0.7.7.2
========================
* 加入 d_poly offset。 (感謝 @ShaneSmiskol)
* Added d_poly offset. (Thanks to @ShaneSmiskol)
* 加入 ZSS 支援。(感謝 @bobbydough, @WilliamPrius 建議, @bobbydough 測試)
* Added ZSS support. (Thanks to @bobbydough, @WilliamPrius for recommendation, @bobbydough for testing)
* 加入錯誤記錄至 /sdcard/crash_logs/ (感謝 @ShaneSmiskol 提供代碼)
* Added error logs to /sdcard/crash_logs/ (Special Thanks to @ShaneSmiskol)
* 加入 LQR 控制器開關進設定畫面。
* Added LQR Controller toggle to settings.
dragonpilot 0.7.7.1
========================
* 加入 C2 風扇靜音模式。(感謝 @dingliangxue)
* Added C2 quiet fan mode. (Thanks to @dingliangxue)
* 加入「輔助換道最低啟動速度」、「自動換道最低啟動速度」設定。
* Added "Assisted Lane Change Min Engage Speed" and "Auto Lane Change Min Engage Speed" settings.
* 加入回調校介面。(感謝 @Kent)
* Re-added Dev UI. (Thanks to @Kent)
* 加入 "dp_lqr" 設定來強制使用 RAV4 的 lqr 調校。(感謝 @eisenheim)
* Added "dp_lqr" setting to force enable lqr tuning from RAV4. (Thanks to eisenheim)
dragonpilot 0.7.7.0
========================
* 基於最新 openpilot 0.7.7 devel.
* Based on latest openpilot 0.7.7 devel.
* 當 Manager 出現錯誤時,顯示 IP 位置。(感謝 @dingliangxue)
* When Manager failed, display IP address. (Thanks to @dingliangxue)
* 加回 sr learner 開關。
* Re-added sr learner toggle.
* 加回 加速模式 開關。
* Re-added Accel Profile toggle.
* Toyota 加入改寫最低巡航速度功能。(感謝 @Mojo)
* Added Toyota to override lowerest cruise speed. (Thanks to @Mojo)
* 介面加入盲點偵測顯示。(感謝 @wabes)
* Added BSM indicator to UI. (Thanks to @wabes)
* 加回彎道減速功能。(感謝 @Mojo)
* re-added Slow On Curve functionality. (Thanks to @Mojo)
dragonpilot 0.7.6.2
========================
* 修正無法正確關閉駕駛監控的問題。
* Fixed unable to properly turn off driver monitor issue.
dragonpilot 0.7.6.1
========================
* 基於最新 openpilot 0.7.6.1 devel.
* Based on latest openpilot 0.7.6.1 devel.
* 優化並整合 dp 服務。 (所有的設定檔已改名,請重新設定所有的功能)
* Optimized and integrated several dp services. (Settings have been renamed, please re-config all settings)
* 完全關閉 steer ratio learner。
* Completely disabled steer ratio learner.
* 移除「加速模式」。
* Removed Accel Profile.
* 加入本田皓影混電版指紋v1。(感謝 @劉駿)
* Added Honda Breeze Hybrid FPv1. (Thanks to @劉駿)
* 加入台灣版 Toyota Prius 4.5 指紋v1。(感謝 @jeekid)
* Added Taiwan Toyota Prius 4.5 FPv1. (Thanks to @jeekid)
dragonpilot 0.7.5.4
========================
* Dynamic Follow 更新模型。(感謝 @ShaneSmiskol 提供代碼、 @cgw1968 測試)
* Updated Dynamic Follow model. (Special Thanks to @ShaneSmiskol for the feature and @cgw1968 for testing)
dragonpilot 0.7.5.3
========================
* Dynamic Follow 更新至 ShaneSmiskol:stock_additions 0.7.5 版。(感謝 @ShaneSmiskol 提供代碼、 @Wei 測試)
* Updated Dynamic Follow to ShaneSmiskol:stock_additions 0.7.5. (Special Thanks to @ShaneSmiskol for the feature and @Wei for testing)
* 優化 Lexus GSH 轉向。(感謝 @簡銘佑 測試)
* Optimize Lexus GSH steering. (Thanks to @簡銘佑)
* C2 支援自動關機「DragonAutoShutdownAt」參數。(感謝 @cgw1968 建議)
* C2 to support auto shutdown "DragonAutoShutDownAt" param. (Thanks to @cgw1968)
* 修正出現「pedalPressed」的錯誤。(感謝 @Wei 回報)
* Fixed issue showing "pedalPressed" error. (Thanks to @Wei)
* 將剎車狀熊顯示於 dp 資訊欄。
* Added brake indicator to dp infobar.
* 修正「溫度監控」燈示。
* Fixed "Temp monitor" indicator.
* 加入「方向燈取消控制」延遲控制設。(感謝 @wabes 建議)
* Added delay config to "Disable Lat Control on Blinker". (Thanks to @wabes)
* 加入巴西版 2020 Corolla Hybrid 指紋v2。(感謝 @berno22 提供)
* Added Brazil 2020 Corolla Hybrid FPv2. (Thanks to @berno22)
dragonpilot 0.7.5.2
========================
* 加入對 VW MQB/PQ 的支援。(感謝 @dingliangxue 移植)
* Added support to VW MQB/PQ platform. (Thanks to @dingliangxue)
* 修改成 3 小時後停止供電。(感謝 @Wei 建議)
* Updated to stop charging after 3 hrs. (Thanks to @Wei)
* 移除行車記錄下的「碰撞偵測」功能。
* Removed Impact Detection in Dashcam.
* 修正開啟「Noctua 風扇」模式導致的錯誤。(感謝 @阿濤 回報)
* Fixed a bug caused by enabling "Noctua Mod". (Thanks to @阿濤)
* 修正「位智模式」無法顯示警示的問題。(感謝 @axandres 回報)
* Fixed alert issue in waze mode. (Thanks to @axandres)
* 修正無法顯示更新中圖示的問題。
* Fixed unable to display "UPDATING" icon issue.
* 加入「允許多次自動換道」功能。(感謝 @阿濤 建議)
* Added "Allow Continuous Auto Lane Change" Toggle. (Thanks to @阿濤)
* 修正開機後設定頁面有時會錯誤的問題。(感謝 @salmankhan@Wei 回報)
* Fixed setting page crash issue. (Thanks to @salmankhan, @Wei)
* 修正熄火後一直出現更新訊息的錯誤。(感謝 @Sky Chang 回報)
* Fixed issue that keep showing update prompt. (Thanks to @Sky Chang)
dragonpilot 0.7.5.1
========================
* 修正因同時使用「社群功能」和「自定車型」造成的加減速問題。(特別感謝 @Wei@Sky Chang、@Han9365@鄧育林 的測試以及回報。)
* Fixed acceleration issue caused by used of both "Community Maintain Feature" and "Custom Car Model". (Special Thanks to @Wei, @Sky Chang, @Han9365, @鄧育林)
* 新增 DragonMaxSpeedLimit 設定值 (mph),當如果車速高於此值 op 將會停止操控。(感謝 @Anthony 建議)
* Added DragonMaxSpeedLimit parameter (mph), op will stop controlling when car speed is high than the value. (Thanks to @Anthony)
* 更新 appd 使用 cnpmjs 來下載 APKs。
* Updated appd to use cnpmjs to download APKs.
* 修正更新服務。(感謝 @Wei)
* Fixed Update Service. (Thanks to @Wei)
* 新增加拿大版 2018 Toyota Sienna LTD 指紋(v2)。(感謝 明峰 提供)
* Added Canada 2018 Toyota Sienna LTD fingerprint (v2). (Thanks to 明峰)
* 新增「通過移動網路上傳」開關
* Added Upload Over Mobile Network toggle.
* 新增「通過熱點上傳」開關
* Added Upload Over Hotspot toggle.
* 新增加拿大版 2018 Toyota Sienna LTD 指紋(v1)。(感謝 明峰 提供)
* Added Canada 2018 Toyota Sienna LTD fingerprint (v1). (Thanks to 明峰)
* 新增大陸版 Volkswagen Golf GTI 指紋 (v1)。(感謝 easyeiji 提供)
* Added China Volkswagen Golf GTI fingerprint (v1). (Thanks to easyeiji)
dragonpilot 0.7.5.0
========================
* 基於最新 openpilot 0.7.5 devel-staging.
* Based on latest openpilot 0.7.5 devel-staging.
* 更新 dp 圖示 (特別感謝 @wabes 的設計與提供)。
* Updated dp logo, special thanks to @wabes for the design.
* 簡/繁中文版和 i18n 整合成為單一版本。
* Merged zhs/zht/i18n versions into one.
* 新增大陸版 CAMRY HYBRID 指紋v2。(感謝 @杜子腾)
* Added China Camery Hybrid FPv2. (Thanks to @杜子腾)
* 新增台灣版 Altis HYBRID 指紋v1。(感謝 @Fish)
* Added Taiwan Altis Hybrid FPv1. (Thanks to @Fish)
* 新增行駛時關閉畫面功能。
* Added Screen off while driving feature.
* 新增倒車時關閉畫面功能。
* Added Screen off while reversing feature.
* 新增駕駛介面加入「加速模式」切換鈕。
* Added acceleration profile toggle onto driving UI.
* 新增自定車型功能,取代指紋暫存功能。
* Replaced fingerprint cache with custom car model selector.
* 新增可調亮度。
* Added Brightness changer.
* 新增部分德語支持。(特別感謝 @arne182 提供)
* Added partial de_DE language support (Thanks to @arne182)
* 新增停車碰撞偵測記錄功能。
* Added off road impact detection to dashcam.
2020-05-06
========================
* 更新 dp 圖示 (特別感謝 @wabes 的設計與提供)。
* 中文版整合進 i18n 版。
* 刪除指紋暫存功能。
* 新增 CAMERY HIBRID 指紋。(感謝 @杜子腾)
* 新增行駛時關閉畫面功能。
* 新增倒車時關閉畫面功能。
* 新增駕駛介面加入「加速模式」切換鈕。
* 新增自定義車型。
2020-04-16
========================
* [DEVEL] 加入台灣版 2016 Lexus IS200t 指紋。(感謝 Philip / Cody Dai)
* [DEVEL] 加入台灣版 2016 Toyota Prius 4.5 代指紋。(感謝 Philip)
* [DEVEL] 加入台灣版 201x Toyota RAV4 4WD 指紋。(感謝 Philip)
* [DEVEL] 加入台灣版 2020 Toyota Auris w/ LTA 指紋。(感謝 Philip)
* [DEVEL] 修正 commIssue 錯誤。(感謝 Kent 協助)
2020-04-13
========================
* [DEVEL] 加入可調整 Toyota Sng 起步反應值 (DragonToyotaSngResponse)。 (特別感謝 @Wei 提供 PR)
* [DEVEL] 駕駛介面加入「動態調整車距」按鈕。(感謝 @cgw1968-5779 建議)
* [DEVEL] 更新 update script。(感謝 深鯨希西 回報)
2020-04-10
========================
* [DEVEL] 更新 panda 至最新的 comma:master 分支。
* [DEVEL] 移除所有的第三方應用改為自動下載。
* [DEVEL] 移除「啟用原廠 DSU 模式」、「安全帶檢查」、「車門檢查」開關。
2020-03-31
========================
* [DEVEL] 更新至 2020-03-31 testing 分支。
2020-03-27
========================
* [DEVEL] 更新至最新的 testing 分支:
* 加入波蘭版 2015 Lexus NX200T 支援。(感謝 wabes 提供)
* 調整「啟用原廠 DSU 模式」為不再需要 AHB 。(Enable Stock DSU Mode no longer requires "AHB" toggle)
* 加入「安全帶檢查」、「車門檢查」、「檔位檢查」、「溫度檢查」開關。
* 加入曲率學習功能 - Curvature Learner 。(感謝 zorrobyte 提供)
* 加入大陸版 2018 Toyota Highlander 支援。(感謝 toyboxZ 提供)
* 加入大陸版 2018 Toyota Camry 2.0 支援。(感謝 Rming 提供)
* 加入韓文支持。(感謝 crwusiz 提供)
* 調整 OFFROAD 主頁翻譯將 "dragonpilot" 改回 "openpilot"。
2020-03-22
========================
* [DEVEL] 更新至最新的 testing 分支。
2020-03-17
========================
* [DEVEL] 更新至最新的 testing 分支 (commaai:devel-staging 0.7.4)。
* [DEVEL] 加入動態調整車距功能。(特別感謝 @ShaneSmiskol 提供 PR)
2020-03-14
========================
* [DEVEL] 更新 pt-Br (葡萄牙語) 翻譯。(感謝 berno22 提供)
* [DEVEL] 加入自動關機開關。(感謝 Rzxd 建議)
* [DEVEL] 調高 Toyota 扭力容錯值。
* [DEVEL] 優化讀取 dp 設定值。
* [DEVEL] 加入 2019 手動 Civic 指紋。感謝 (AlexNoop 提供)
* [DEVEL] dp 功能加入對 Subaru 車系的支援。
2020-03-06
========================
* [DEVEL] 加入葡萄牙語支持。(感謝 berno22 提供)
* [DEVEL] 加入大陸 2018 Camry、2020 RAV4 指紋。(感謝 笨木匠 提供)
* [DEVEL] 建立 devel-i18n 取代 devel-en。
* [DEVEL] devel-en is deprecated, please switch to devel-i18n instead.
2020-03-04
========================
* [DEVEL] 加入顯示駕駛監控畫面。
* [DEVEL] 加入加速模式選項。(特別感謝 @arne182, @cgw1968-5779 提供 PR)
* [DEVEL] 修正 shutdownd 在 comma two 可能會不正常關機的錯誤。(感謝 @Wei, @Rzxd 回報)
2020-02-25
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.3)。
2020-02-21
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.3)。
2020-02-14
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.2)。
* [DEVEL] 修正錯誤。
2020-02-08
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.2)。
* [DEVEL] dp 功能加入對現代 (Hyundai) 車系的支援。
* [DEVEL] 加入神盾測速照相自動啟動的開關。
* [DEVEL] 更新高德地圖至 v4.5.0.600053。
* [DEVEL] 使用 0.6.6 版的更新系統。
* [DEVEL] 修正急剎問題。(感謝 kumar 提供)
2020-01-31
========================
* [DEVEL] 移除行車介面電量、溫度顯示,(修正畫面當機、黑屏問題)
2020-01-29
========================
* [DEVEL] 修正行車介面錯誤。(感謝 深鲸希西 測試eisenheim、HeatNation 反應)
2020-01-23
========================
* [DEVEL] 加入 Steer Ratio Learner 關閉。(感謝 eisenheim 建議)
* [DEVEL] 行車介面加入電量、溫度。(感謝 eisenheim 建議)
* [DEVEL] 優化 appd。
2020-01-19
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.1)。
* [DEVEL] 調整 appd 和 ALC 邏輯。
2020-01-14
========================
* [DEVEL] 加入開機啟動個人熱點。(感謝 eisenheim 建議)
2020-01-08
========================
* [DEVEL] 加入大陸版 2018 Lexus RX300 支援。(感謝 cafe 提供)
* [DEVEL] 加入 DragonBTG 設定。(感謝 CloudJ、低調哥、歐姓Altis車主 提供)
2019-12-31
========================
* [DEVEL-ZHS] 加回第三方應用。
2019-12-29
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.0)。
* [DEVEL] 輔助/自動變道改為可調整參數 (進階用戶)。(DragonAssistedLCMinMPH、DragonAutoLCMinMPH、DragonAutoLCDelay)
* [DEVEL-ZHS] 修正無法運行第三方應用錯誤。(感謝 深鲸希西 反應)
2019-12-18
========================
* [DEVEL] 修正自動換道邏輯。
* [DEVEL] 更新 offroad 翻譯。
* [DEVEL] 錯誤修正。
* [DEVEL] 移除美版 2017 Civic Hatchback 指紋。(與其它車型衝突)
2019-12-17
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.0)。
* [DEVEL] 加入輔助換道開關。24mph / 40kph 以上)
* [DEVEL] 加入自動換道開關。40mph / 65kph 以上)
* [DEVEL] 加入大陸版 2019 雷凌汽油版指紋。 (感謝 Shell 提供)
* [DEVEL] 加入大陸版 2019 卡羅拉汽油版指紋。 (感謝 Shell 提供)
* [DEVEL] 加入美版 2017 Civic Hatchback 指紋。(感謝 CFranHonda 提供)
2019-12-10
========================
* [DEVEL] 加入位智車機模式。 (Waze Mode)
2019-11-21
========================
* [DEVEL] 修正 offroad 翻譯。(感謝 鄧育林 回報)
* [DEVEL] 調整前車靜止移動偵測參數。
* [DEVEL] 前車靜止移動偵測可在未啟用 dp 時運作。
2019-11-18
========================
* [DEVEL] 修正 offroad 翻譯。(感謝 Cody、鄧育林 回報)
2019-11-18
========================
* [DEVEL] 修正 frame 翻譯。
2019-11-15
========================
* [DEVEL] 修正不會充電的錯誤。 (感謝 袁昊 反應)
2019-11-15
========================
* [DEVEL] 修正充電控制。 (感謝 KT 反應)
* [DEVEL] 更新 frame 翻譯,改為多語言版。 (感謝 深鲸希西、shaoching885、鄧育林 反應)
* [DEVEL] 更新至最新的 commaai:devel (0.6.6)。
2019-11-12
========================
* [DEVEL] 只顯示電量文字 (注意:有時不會更新,需要拔插 USB 線)
* [DEVEL] 自動偵測並鎖定硬體 (EON / UNO)。
2019-11-12
========================
* [DEVEL] 加入鎖定硬體 (EON / UNO) 的程式碼。
2019-11-11
========================
* [DEVEL] 更新高德地圖至 v4.3.0.600310 R2098NSLAE
* [DEVEL] 更新 MiXplorer 至 v6.40.3
* [DEVEL] 更新至最新的 commaai:devel (0.6.6)。
* [DEVEL] 前車靜止移動偵測加入偵測警示。
2019-11-07
========================
* [DEVEL] 讓 Bosch 系統顯示三角。 (感謝 ching885 回報)
* [DEVEL] 更新 offroad 多語言版簡體中文翻譯 (感謝 Rming 提供)
2019-11-06
========================
* [DEVEL] 修正 0.6.6 appd 和 dashcamd 錯誤。 (感謝 鄧育林 回報)
* [DEVEL] 更新至最新的 commaai:devel (0.6.6)。
2019-11-05
========================
* [DEVEL] 加入台灣 Lexus 2017 GS450h 支援。 (感謝 簡銘佑 提供指紋)
2019-11-01
========================
* [DEVEL] 新增神盾測速照相。 (感謝 Sky Chang 和 Wei Yi Chen)
* [DEVEL] 修正 offroad 翻譯。 (感謝 Leo Hsieh)
2019-11-01
========================
* [DEVEL] 移除 Miui 字型,縮小 dp 使用空間。
* [DEVEL] 更新 offroad 為多語言版
* [DEVEL] 更新至最新的 commaai:devel (0.6.5)。
2019-10-29
========================
* [DEVEL] 加入 SnG 補丁。(感謝 楊雅智)
2019-10-28
========================
* [DEVEL] 更新至最新的 commaai:devel (0.6.5)。
* [DEVEL] 調整 dragon_allow_gas 邏輯 (請回報任何問題,需更新 Panda 韌體)
2019-10-18
========================
* [DEVEL] 加入前車靜止移動偵測。(測試版,感謝 ucolchen)
* [DEVEL] 移除強迫網路連線提示。(感謝 Shell)
* [DEVEL] 修正 allow_gas 功能。
2019-10-18
========================
* [DEVEL] 加入彎道減速功能開關。
* [DEVEL] 強迫使用 dp 版 Panda 韌體。
* [DEVEL] 更新至最新的 commaai:devel (0.6.5)。
2019-10-17
========================
* [DEVEL] 加入「車型」顯示於 dp 設定畫面。
* [DEVEL] 修正充電控制讀取預設值的錯誤。
* [DEVEL] 修正無法顯示更新記錄的錯誤。
2019-10-16
========================
* [DEVEL] 刷新 Panda 韌體按鈕將會自動重啟 EON。(感謝 鄧育林 建議)
* [DEVEL] 下載更新記錄時使用 "no-cache" 標頭。
* [DEVEL] 更新高德地圖至 v4.3.0
* [DEVEL] 刪除 bs (Branch Switcher)
2019-10-14
========================
* [DEVEL] 啟用自動更新功能。(感謝 鄧育林 提供)
* [DEVEL] 清除不再使用的 dp params。
* [DEVEL] 加入數字電量指示。(感謝 鄧育林 建議)
* [DEVEL] 加入刷新 Panda 韌體按鈕。
2019-10-11
========================
* [DEVEL] 更新至最新的 commaai:devel (0.6.5)。
* [DEVEL] 加入台灣 2019 RAV4 汽油版指紋。 (感謝 Max Duan / CloudJ 提供)
2019-10-09
========================
* [DEVEL] 加入當 LatCtrl 關閉時,畫面顯示提示訊息。
2019-10-08
========================
* [DEVEL] 加回駕駛監控開關。
* [DEVEL] 加入 bs (branch switcher) 程式。
2019-10-07
========================
* [DEVEL] 加入台灣版 2019 RAV4H 油電版指紋。(感謝 Max Duan 提供)
2019-10-05
========================
* [DEVEL] 移除 curvature learner: 轉角明顯比原廠小。
* [DEVEL] 更新至最新的 commaai:devel (0.6.4)。
2019-09-30
========================
* [DEVEL] 更新 curvature learner 版本至 v4。
* [DEVEL] Lexus ISH 使用更精確的 EPS Steering Angle Sensor
2019-09-27
========================
* [DEVEL] 加入 Zorrobyte 的 curvature learner (https://github.com/zorrobyte/openpilot)
* [DEVEL] 加入可開關駕駛監控的程式碼。
* [DEVEL] 取消當 steering 出現錯誤時,自動切斷方向控制 2 秒的機制。
* [DEVEL] 讓行車介面的「方向盤」/「轉彎」圖示半透明化。
2019-09-26
========================
* [DEVEL] 修正當「啟用記錄服務」關閉時make 會有問題的錯誤。 (感謝 shaoching885 和 afa 回報)
2019-09-24
========================
* [DEVEL] 行車介面加入可開關的「前車」、「路線」、「車道」設定。
* [DEVEL] 行車介面加入可開關的「方向燈號」提示。 (感謝 CloudJ 建議,程式碼來源: https://github.com/kegman/openpilot)
2019-09-23
========================
* [DEVEL] 優化讀取 params 的次數。
* [DEVEL] 加入可開關的車道偏移警示。
* [DEVEL] 修正充電控制邏輯。
* [DEVEL] 加入台灣 Prius 4.5 指紋。 (感謝 Lin Hsin Hung 提供)
2019-09-20
========================
* [DEVEL] 加入充電控制功能。 (感謝 loveloveses 和 KT 建議)
2019-09-16
========================
* [DEVEL] 加入台灣 CT200h 指紋。 (感謝 CloudJ 提供)
* [DEVEL] 加入美版 CT200h 移植。 (感謝 thomaspich 提供)
2019-09-13
========================
* [DEVEL] 行車介面加入可開關的「速度顯示」設定。
2019-09-09
========================
* [DEVEL] 加入 GreyPanda 模式。
2019-08-28
========================
* [DEVEL] 加入可調警示音量。
2019-08-27
========================
* [DEVEL] 自動關機改為可調時長。

248
CHANGELOGS-REL.md Normal file
View File

@@ -0,0 +1,248 @@
dragonpilot 0.7.8
========================
* 基於最新 openpilot 0.7.8 devel.
* Based on latest openpilot 0.7.8 devel.
* 加入重置 DP 設定按鈕。(感謝 @LOVEChen 建議)
* Added "Reset DP Settings" button. (Thanks to @LOVEChen)
* 將警示訊息更改為類似於概念 UI 的設計。
* Alert messages changed to concept UI alike design.
* 當 manager 出現錯誤後,按 Exit 按鈕會執行 reset_update 腳本。
* Added ability to execute reset_update.sh when press "Exit" button once manager returned errors.
* 加入 ko-KR 翻譯。
* Added ko-KR translation.
* 加入 Honda Jade 支援。(感謝 @李俊灝)
* Added Honda Jade support. (Thanks to @lijunhao731)
* 修正 ui.cc 內存越界的問題。(感謝 @piggy 提供)
* Fixed ui.cc memory out of bound issue. (Thanks to @piggy)
* gpxd 記錄改自動存成 zip 格式。
* gpxd now store in zip format.
* 強制關閉 panda 檢查 DOS 硬體。
* Force disabled DOS hardware check in panda.
* 修正在沒網路的情況下,開機超過五分鐘的問題。
* Fixed 5+ minutes boot time issue when there is no internet connection.
* 錯誤回傳改使用 dp 的主機。
* Used dp server for error reporting.
* 更新服務改使用 gitee 的 IP 檢查連線狀態。
* updated service uses gitee IP address instead.
dragonpilot 0.7.7.0
========================
* 基於最新 openpilot 0.7.7 devel.
* Based on latest openpilot 0.7.7 devel.
* 當 Manager 出現錯誤時,顯示 IP 位置。(感謝 @dingliangxue)
* When Manager failed, display IP address. (Thanks to @dingliangxue)
* 加回 sr learner 開關。
* Re-added sr learner toggle.
dragonpilot 0.7.6
========================
* 基於最新 openpilot 0.7.6.1 devel.
* Based on latest openpilot 0.7.6.1 devel.
* 優化並整合 dp 服務。 (所有的設定檔已改名,請重新設定所有的功能)
* Optimized and integrated several dp services. (Settings have been renamed, please re-config all settings)
* 完全關閉 steer ratio learner。
* Completely disabled steer ratio learner.
* 移除「加速模式」。
* Removed Accel Profile.
* 加入本田皓影混電版指紋v1。(感謝 @劉駿)
* Added Honda Breeze Hybrid FPv1. (Thanks to @劉駿)
* 加入台灣版 Toyota Prius 4.5 指紋v1。(感謝 @jeekid)
* Added Taiwan Toyota Prius 4.5 FPv1. (Thanks to @jeekid)
* 加入 2020 Toyota Prius 指紋v2。(感謝 @Trae)
* Added Toyota Prius 2020 FPv2. (Thanks to @Trae)
* 優化 Honda CR-V Hybrid 轉向。(感謝 @martint1980)
× Optomised Honda CR-V Hybrid lateral control. (Thanks to @martint1980)
dragonpilot 0.7.5
========================
* 優化 Lexus GSH 轉向。(感謝 @簡銘佑 測試)
* Optimize Lexus GSH steering. (Thanks to @簡銘佑)
* C2 支援自動關機「DragonAutoShutdownAt」參數。(感謝 @cgw1968 建議)
* C2 to support auto shutdown "DragonAutoShutDownAt" param. (Thanks to @cgw1968)
* 將剎車狀熊顯示於 dp 資訊欄。
* Added brake indicator to dp infobar.
* 加入「方向燈取消控制」延遲控制設。(感謝 @wabes 建議)
* Added delay config to "Disable Lat Control on Blinker". (Thanks to @wabes)
* 加入巴西版 2020 Corolla Hybrid 指紋v2。(感謝 @berno22 提供)
* Added Brazil 2020 Corolla Hybrid FPv2. (Thanks to @berno22)
* 加入對 VW MQB/PQ 的支援。(感謝 @dingliangxue 移植)
* Added support to VW MQB/PQ platform. (Thanks to @dingliangxue)
* 加入「允許多次自動換道」功能。(感謝 @阿濤 建議)
* Added "Allow Continuous Auto Lane Change" Toggle. (Thanks to @阿濤)
* 新增 DragonMaxSpeedLimit 設定值 (mph),當如果車速高於此值 op 將會停止操控。(感謝 @Anthony 建議)
* Added DragonMaxSpeedLimit parameter (mph), op will stop controlling when car speed is high than the value. (Thanks to @Anthony)
* 新增加拿大版 2018 Toyota Sienna LTD 指紋(v2)。(感謝 明峰 提供)
* Added Canada 2018 Toyota Sienna LTD fingerprint (v2). (Thanks to 明峰)
* 新增「通過移動網路上傳」開關
* Added Upload Over Mobile Network toggle.
* 新增「通過熱點上傳」開關
* Added Upload Over Hotspot toggle.
* 新增加拿大版 2018 Toyota Sienna LTD 指紋(v1)。(感謝 明峰 提供)
* Added Canada 2018 Toyota Sienna LTD fingerprint (v1). (Thanks to 明峰)
* 新增大陸版 Volkswagen Golf GTI 指紋 (v1)。(感謝 easyeiji 提供)
* Added China Volkswagen Golf GTI fingerprint (v1). (Thanks to easyeiji)
* 更新 dp 圖示 (特別感謝 @wabes 的設計與提供)。
* Updated dp logo, special thanks to @wabes for the design.
* 簡/繁中文版和 i18n 整合成為單一版本。
* Merged zhs/zht/i18n versions into one.
* 新增大陸版 CAMRY HYBRID 指紋v2。(感謝 @杜子腾)
* Added China Camery Hybrid FPv2. (Thanks to @杜子腾)
* 新增台灣版 Altis HYBRID 指紋v1。(感謝 @Fish)
* Added Taiwan Altis Hybrid FPv1. (Thanks to @Fish)
* 新增行駛時關閉畫面功能。
* Added Screen off while driving feature.
* 新增倒車時關閉畫面功能。
* Added Screen off while reversing feature.
* 新增駕駛介面加入「加速模式」切換鈕。
* Added acceleration profile toggle onto driving UI.
* 新增自定車型功能,取代指紋暫存功能。
* Replaced fingerprint cache with custom car model selector.
* 新增可調亮度。
* Added Brightness changer.
* 新增部分德語支持。(特別感謝 @arne182 提供)
* Added partial de_DE language support (Thanks to @arne182)
dragonpilot 0.7.4
========================
* [2020-04-10] 移除所有的第三方應用改為自動下載。
* [2020-04-10] 移除「啟用原廠 DSU 模式」、「安全帶檢查」、「車門檢查」開關。
* [2020-03-31] 還原部分修改代碼以達到 comma ai 安全準則。 (Reverted changes to panda safety code to comply with comma ai safety guideline.)
* [2020-03-31] 調整「啟用原廠 DSU 模式」為踩剎車時會暫時斷開控制 。(Enable Stock DSU Mode will temporary disable controls when brake is pressed.)
* [2020-03-27] 加入波蘭版 2015 Lexus NX200T 支援。(感謝 wabes 提供)
* [2020-03-27] 調整「啟用原廠 DSU 模式」為不再需要 AHB 。(Enable Stock DSU Mode no longer requires "AHB" toggle)
* [2020-03-27] 加入「安全帶檢查」、「車門檢查」、「檔位檢查」、「溫度檢查」開關。
* [2020-03-27] 加入曲率學習功能 - Curvature Learner 。(感謝 zorrobyte 提供)
* [2020-03-27] 加入大陸版 2018 Toyota Highlander 支援。(感謝 toyboxZ 提供)
* [2020-03-27] 加入大陸版 2018 Toyota Camry 2.0 支援。(感謝 Rming 提供)
* [2020-03-27] 加入韓文支持。(感謝 crwusiz 提供)
* [2020-03-27] 調整 OFFROAD 主頁翻譯將 "dragonpilot" 改回 "openpilot"。
dragonpilot 0.7.3
========================
* [2020-03-17] 加入動態調整車距功能。(特別感謝 @ShaneSmiskol 提供 PR)
* [2020-03-14] 更新 pt-Br (葡萄牙語) 翻譯。(感謝 berno22 提供)
* [2020-03-14] 加入自動關機開關。(感謝 Rzxd 建議)
* [2020-03-14] 調高 Toyota 扭力容錯值。
* [2020-03-14] 優化讀取 dp 設定值。
* [2020-03-14] 加入 2019 手動 Civic 指紋。感謝 (AlexNoop 提供)
* [2020-03-14] dp 功能加入對 Subaru 車系的支援。
* [2020-03-06] 加入葡萄牙語支持。(感謝 berno22 提供)
* [2020-03-06] 加入大陸 2018 Camry、2020 RAV4 指紋。(感謝 笨木匠 提供)
* [2020-03-04] 加入顯示駕駛監控畫面。
* [2020-03-04] 加入加速模式選項。(特別感謝 @arne182, @cgw1968-5779 提供 PR)
* [2020-03-04] 修正 shutdownd 在 comma two 可能會不正常關機的錯誤。(感謝 @Wei, @Rzxd 回報)
dragonpilot 0.7.2
========================
* [2020-02-08] dp 功能加入對現代 (Hyundai) 車系的支援。
* [2020-02-08] 加入神盾測速照相自動啟動的開關。
* [2020-02-08] 更新高德地圖至 v4.5.0.600053。
* [2020-02-08] 使用 0.6.6 版的更新系統。
* [2020-02-08] 修正急剎問題。(感謝 kumar 提供)
* [2020-01-31] 移除行車介面電量、溫度顯示,(修正畫面當機、黑屏問題)
* [2020-01-29] 修正行車介面錯誤。(感謝 深鲸希西 測試eisenheim、HeatNation 反應)
* [2020-01-23] 加入 Steer Ratio Learner 關閉。(感謝 eisenheim 建議)
* [2020-01-23] 行車介面加入電量、溫度。(感謝 eisenheim 建議)
* [2020-01-23] 優化 appd。
dragonpilot 0.7.1
========================
* [2020-01-19] 調整 appd 和 ALC 邏輯。
* [2020-01-14] 加入開機啟動個人熱點。(感謝 eisenheim 建議)
* [2020-01-18] 加入大陸版 2018 Lexus RX300 支援。(感謝 cafe 提供)
* [2020-01-18] 加入 DragonBTG 設定。(感謝 CloudJ、低調哥、歐姓Altis車主 提供)
dragonpilot 0.7.0
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.0)。
* [2019-12-29] 輔助/自動變道改為可調整參數 (進階用戶)。(DragonAssistedLCMinMPH、DragonAutoLCMinMPH、DragonAutoLCDelay)
* [2019-12-29] 修正無法運行第三方應用錯誤。(感謝 深鲸希西 反應)
* [2019-12-18] 修正自動換道邏輯。
* [2019-12-18] 更新 offroad 翻譯。
* [2019-12-18] 錯誤修正。
* [2019-12-18] 移除美版 2017 Civic Hatchback 指紋。(與其它車型衝突)
* [2019-12-17] 加入輔助換道開關。24mph / 40kph 以上)
* [2019-12-17] 加入自動換道開關。40mph / 65kph 以上)
* [2019-12-17] 加入大陸版 2019 雷凌汽油版指紋。 (感謝 Shell 提供)
* [2019-12-17] 加入大陸版 2019 卡羅拉汽油版指紋。 (感謝 Shell 提供)
* [2019-12-17] 加入美版 2017 Civic Hatchback 指紋。(感謝 CFranHonda 提供)
* [2019-12-10] 加入位智車機模式。 (Waze Mode)
* [2019-11-21] 修正 offroad 翻譯。(感謝 鄧育林 回報)
* [2019-11-21] 調整前車靜止移動偵測參數。
* [2019-11-21] 前車靜止移動偵測可在未啟用 dp 時運作。
* [2019-11-18] 修正 offroad 翻譯。(感謝 Cody、鄧育林 回報)
* [2019-11-18] 修正 frame 翻譯。
dragonpilot 0.6.6
========================
* [2019-11-15] 修正不會充電的錯誤。 (感謝 袁昊 反應)
* [2019-11-15] 修正充電控制。 (感謝 KT 反應)
* [2019-11-15] 更新 frame 翻譯,改為多語言版。 (感謝 深鲸希西、shaoching885、鄧育林 反應)
* [2019-11-12] 只顯示電量文字 (注意:有時不會更新,需要拔插 USB 線)
* [2019-11-12] 自動偵測並鎖定硬體 (EON / UNO)。
* [2019-11-12] 加入鎖定硬體 (EON / UNO) 的程式碼。
* [2019-11-11] 更新高德地圖至 v4.3.0.600310 R2098NSLAE
* [2019-11-11] 更新 MiXplorer 至 v6.40.3
* [2019-11-11] 前車靜止移動偵測加入偵測警示。
* [2019-11-07] 讓 Bosch 系統顯示三角。 (感謝 ching885 回報)
* [2019-11-07] 更新 offroad 多語言版簡體中文翻譯 (感謝 Rming 提供)
* [2019-11-06] 修正 0.6.6 appd 和 dashcamd 錯誤。 (感謝 鄧育林 回報)
dragonpilot 0.6.5
========================
* [2019-11-05] 加入台灣 Lexus 2017 GS450h 支援。 (感謝 簡銘佑 提供指紋)
* [2019-11-01] 新增神盾測速照相。 (感謝 Sky Chang 和 Wei Yi Chen)
* [2019-11-01] 修正 offroad 翻譯。 (感謝 Leo Hsieh)
* [2019-11-01] 移除 Miui 字型,縮小 dp 使用空間。
* [2019-11-01] 更新 offroad 為多語言版
* [2019-10-29] 加入 SnG 補丁。(感謝 楊雅智)
* [2019-10-28] 調整 dragon_allow_gas 邏輯 (請回報任何問題,需更新 Panda 韌體)
* [2019-10-22] 移除強迫網路連線提示。(感謝 Shell)
* [2019-10-18] 加入前車靜止移動偵測。(測試版,感謝 ucolchen)
* [2019-10-18] 移除強迫網路連線提示。(感謝 Shell)
* [2019-10-18] 修正 allow_gas 功能。
* [2019-10-18] 加入彎道減速功能開關。
* [2019-10-18] 強迫使用 dp 版 Panda 韌體。
* [2019-10-17] 加入「車型」顯示於 dp 設定畫面。
* [2019-10-17] 修正充電控制讀取預設值的錯誤。
* [2019-10-17] 修正無法顯示更新記錄的錯誤。
* [2019-10-17] 刷新 Panda 韌體按鈕將會自動重啟 EON。(感謝 鄧育林 建議)
* [2019-10-17] 下載更新記錄時使用 "no-cache" 標頭。
* [2019-10-17] 更新高德地圖至 v4.3.0
* [2019-10-14] 啟用自動更新功能。(感謝 鄧育林 提供)
* [2019-10-14] 清除不再使用的 dp params。
* [2019-10-14] 加入數字電量指示。(感謝 鄧育林 建議)
* [2019-10-14] 加入刷新 Panda 韌體按鈕。
* [2019-10-11] 加入台灣 2019 RAV4 汽油版指紋。 (感謝 Max Duan / CloudJ 提供)
* [2019-10-11] 加入當 LatCtrl 關閉時,畫面顯示提示訊息。
dragonpilot 0.6.4
========================
* [2019-10-11] 加入台灣版 2019 RAV4H 油電版指紋。
* [2019-10-08] 加回駕駛監控開關。
* [2019-10-07] 加入台灣版 2019 RAV4H 油電版指紋。(感謝 Max Duan 提供)
* [2019-10-05] 移除 curvature learner: 轉角明顯比原廠小。
* [2019-09-30] 更新 curvature learner 版本至 v4。
* [2019-09-30] Lexus ISH 使用更精確的 EPS Steering Angle Sensor
* [2019-09-27] 加入 Zorrobyte 的 curvature learner (https://github.com/zorrobyte/openpilot)
* [2019-09-27] 加入可開關駕駛監控的程式碼。
* [2019-09-27] 取消當 steering 出現錯誤時,自動切斷方向控制 2 秒的機制。
* [2019-09-27] 讓行車介面的「方向盤」/「轉彎」圖示半透明化。
* [2019-09-26] 修正當「啟用記錄服務」關閉時make 會有問題的錯誤。 (感謝 shaoching885 和 afa 回報)
* [2019-09-24] 行車介面加入可開關的「前車」、「路線」、「車道」設定。
* [2019-09-24] 行車介面加入可開關的「方向燈號」提示。 (感謝 CloudJ 建議,程式碼來源: https://github.com/kegman/openpilot)
* [2019-09-23] 優化讀取 params 的次數。
* [2019-09-23] 加入可開關的車道偏移警示。
* [2019-09-23] 修正充電控制邏輯。
* [2019-09-23] 加入台灣 Prius 4.5 指紋。 (感謝 Lin Hsin Hung 提供)
* [2019-09-20] 加入充電控制功能。 (感謝 loveloveses 和 KT 建議)
* [2019-09-16] 加入台灣 CT200h 指紋。 (感謝 CloudJ 提供)
* [2019-09-16] 加入美版 CT200h 移植。 (感謝 thomaspich 提供)
* [2019-09-13] 行車介面加入可開關的「速度顯示」設定。
* [2019-09-09] 加入 GreyPanda 模式。
* [2019-08-28] 加入可調警示音量。
* [2019-08-27] 自動關機改為可調時長。
dragonpilot 0.6.3
========================
* [2019-10-11] 加入台灣版 2019 RAV4H 油電版指紋。

317
CHANGELOGS.md Normal file
View File

@@ -0,0 +1,317 @@
2020-09-23 (0.7.8.0)
========================
* 修正在沒網路的情況下,開機超過五分鐘的問題。
* Fixed 5+ minutes boot time issue when there is no internet connection.
* 錯誤回傳改使用 dp 的主機。
* Used dp server for error reporting.
* 更新服務改使用 gitee 的 IP 檢查連線狀態。
* updated service uses gitee IP address instead.
2020-09-21 (0.7.8.0)
========================
* 強制關閉 panda 檢查 DOS 硬體。
* Force disabled DOS hardware check in panda.
2020-09-18 (0.7.8.0)
========================
* gpxd 記錄改自動存成 zip 格式。
* gpxd now store in zip format.
2020-09-15 (0.7.8.0)
========================
* 加入 Honda Jade 支援。(感謝 @李俊灝)
* Added Honda Jade support. (Thanks to @lijunhao731)
* 修正 ui.cc 內存越界的問題。(感謝 @piggy 提供)
* Fixed ui.cc memory out of bound issue. (Thanks to @piggy)
2020-09-01 (0.7.8.0)
========================
* 加入 ko-KR 翻譯。
* Added ko-KR translation.
2020-08-21 (0.7.8.0)
========================
* 基於最新 openpilot 0.7.8 devel.
* Based on latest openpilot 0.7.8 devel.
* 加入重置 DP 設定按鈕。(感謝 @LOVEChen 建議)
* Added "Reset DP Settings" button. (Thanks to @LOVEChen)
* 將警示訊息更改為類似於概念 UI 的設計。
* Alert messages changed to concept UI alike design.
* 當 manager 出現錯誤後,按 Exit 按鈕會執行 reset_update 腳本。
* Added ability to execute reset_update.sh when press "Exit" button once manager returned errors.
2020-08-18 (0.7.7.0)
========================
* gpxd 不再切換至 GCJ-02 格式。(感謝 @arne182 建議)
* gpxd no longer switch to GCJ-02 format automatically. (Thanks to @arne182)
* 修正方向盤監控。
* Fixed steering monitor timer param.
* 修正行駛時關閉畫面導致當機的錯誤。(感謝 @salmankhan, @stevej99, @bobbydough 回報)
* Fixed screen frozen issue when "screen off while driving" toggle is enabled. (Thanks to @salmankhan, @stevej99, @bobbydough)
* 加回 Dev Mini UI 開關。(感謝 @Ninjaa 建議)
* Re-added Dev Mini UI. (Thanks to @Ninjaa)
2020-08-17 (0.7.7.0)
========================
* gpxd 只儲存高精度數據。(感謝 @arne182)
* gpxd now only stored high accuracy data. (Thanks to @arne182)
* gpxd 加入自動切換成 GCJ-02 格式。
* added ability to switch to GCJ-02 format in gpxd.
* 新增 (dp_reset_live_parameters_on_start) 每次發車重設 LiveParameters 值。(感謝 @eisenheim)
* Added ability (dp_reset_live_param_on_start) to reset LiveParameters on each start. (Thanks @eisenheim)
2020-08-12 (0.7.7.0)
========================
* 修正同時開啟 dp_toyota_zss 和 dp_lqr 產生的錯誤。(感謝 @bobbydough)
* Fixed error cuased by enabling both dp_toyota_zss and dp_lqr at the same time. (Thanks to @bobbydough)
2020-08-12 (0.7.7.0)
========================
* 新增 (dp_gpxd) 將 GPS 軌跡導出至 GPX 格式 (/sdcard/gpx_logs/)的功能。 (感謝 @mageymoo1
* Added ability (dp_gpxd) to export GPS track into GPX files (/sdcard/gpx_logs/). (Thanks to @mageymoo1)
* 使用德國的車道寬度估算值。 (感謝 @arne182
* Used lane width estimate value from Germany. (Thanks to @arne182)
2020-08-11 (0.7.7.0)
========================
* 加入 d_poly offset。 (感謝 @ShaneSmiskol)
* Added d_poly offset. (Thanks to @ShaneSmiskol)
2020-08-05 (0.7.7.0)
========================
* 修正 Dev UI 顯示。
* Fixed Dev UI display.
* 加入 LQR 控制器開關進設定畫面。
* Added LQR Controller toggle to settings.
2020-08-04 (0.7.7.0)
========================
* 嘗試修正非 Toyota 使用 lqr 產生的錯誤。
* Attempted to fix lqr issue on non-Toyota Cars.
* 加入錯誤記錄至 /sdcard/crash_logs/ (感謝 @ShaneSmiskol 提供代碼)
* Added error logs to /sdcard/crash_logs/ (Special Thanks to @ShaneSmiskol)
2020-08-02 (0.7.7.0)
========================
* 加入 ZSS 支援。(感謝 @bobbydough, @WilliamPrius 建議, @bobbydough 測試)
* Added ZSS support. (Thanks to @bobbydough, @WilliamPrius for recommendation, @bobbydough for testing)
2020-07-28 (0.7.7.0)
========================
* 修正 steer ratio learner 關閉。(感謝 @Mojo 回報, @ShaneSmiskol 提供代碼)
* Fixed steer ratio learner toggle. (Thanks to @Mojo, @ShaneSmiskol)
* 加入 "dp_lqr" 設定來強制使用 RAV4 的 lqr 調校。(感謝 @eisenheim)
* Added "dp_lqr" setting to force enable lqr tuning from RAV4. (Thanks to eisenheim)
2020-07-28 (0.7.7.0)
========================
* 修正無法上傳記錄的問題。(感謝 @Mojo)
* Fixed unable to upload log issue. (Thanks to @Mojo)
* 修正無法關閉警示音的問題。(感謝 @Mojo)
* Fixed unable to disable audio alert (-100%) issue. ($Thanks to @Mojo)
2020-07-27 (0.7.7.0)
========================
* 加入回調校介面。(感謝 @Kent)
* Re-added Dev UI. (Thanks to @Kent)
2020-07-27 (0.7.7.0)
========================
* 加入 C2 風扇靜音模式。(感謝 @dingliangxue)
* Added C2 quiet fan mode. (Thanks to @dingliangxue)
* 加入「輔助換道最低啟動速度」、「自動換道最低啟動速度」設定。
* Added "Assisted Lane Change Min Engage Speed" and "Auto Lane Change Min Engage Speed" settings.
2020-07-23 (0.7.7.0)
========================
* 修正 appd。(感謝 @cgw1968)
* Fixed appd. (Thanks to @cgw1968)
2020-07-22 (0.7.7.0)
========================
* 修正 waze 顯示。(感謝 @Mojo)
* Fixed waze display. (Thanks to @Mojo)
* 加回彎道減速功能。(感謝 @Mojo)
* re-added Slow On Curve functionality. (Thanks to @Mojo)
* 加入日文支援。(特別感謝 @ponzu07 提供)
* Added Japanese support. (Special thanks to @ponzu07)
* 刪除部分設定對 dp_steering_on_signal 的依賴。
* Removed dp_steering_on_signal dependencies.
* 介面加入盲點偵測顯示。(感謝 @wabes)
* Added BSM indicator to UI. (Thanks to @wabes)
2020-07-21 (0.7.7.0)
========================
* Toyota 加入改寫最低巡航速度功能。(感謝 @Mojo)
* Added Toyota to override lowest cruise speed. (Thanks to @Mojo)
* 修正 gm 錯誤。
* Fixed bugs in gm cars.
2020-07-20 (0.7.7.0)
========================
* 加回 加速模式 開關。
* Re-added Accel Profile toggle.
* 修正 gm 錯誤。
* Fixed bugs in gm cars.
2020-07-19 (0.7.7.0)
========================
* 限制 dp_conf int / float 範圍。
* Limited dp_conf int/float range.
* 修復行車記錄文件夾不存在的錯誤。
* Fixed dashcam folder not exist error.
2020-07-18 (0.7.7.0)
========================
* 優化 camera offset 讀取。
* optomised loading camera offset value.
* 更換模型延遲警示為一般警示。
* Replaced model lagging loud alert to normal alert.
2020-07-17 (0.7.7.0)
========================
* 更新至最新 openpilot 0.7.7 devel。
* Updated to latest openpilot 0.7.7 devel.
2020-07-17 (0.7.7.0)
========================
* 當 Manager 出現錯誤時,顯示 IP 位置。(感謝 @dingliangxue)
* When Manager failed, display IP address. (Thanks to @dingliangxue)
* 加回 sr learner 開關。
* Re-added sr learner toggle.
2020-07-13 (0.7.7.0)
========================
* 基於最新 openpilot 0.7.7 devel.
* Based on latest openpilot 0.7.7 devel.
2020-06-22 (0.7.6.1)
========================
* 更新至 openpilot 0.7.6.1。 (特別感謝 @rockindy 協助更新)
* Updated to openpilot 0.7.6.1. (Special thanks to @rockindy for initial merge)
* 優化並整合 dp 服務。 (所有的設定檔已改名,請重新設定所有的功能)
* Optimized and integrated several dp services. (Settings have been renamed, please re-config all settings)
* 完全關閉 steer ratio learner。
* Completely disabled steer ratio learner.
* 移除「加速模式」。
* Removed Accel Profile.
* 加入本田皓影混電版指紋v1。(感謝 @劉駿)
* Added Honda Breeze Hybrid FPv1. (Thanks to @劉駿)
* 加入台灣版 Toyota Prius 4.5 指紋v1。(感謝 @jeekid)
* Added Taiwan Toyota Prius 4.5 FPv1. (Thanks to @jeekid)
2020-06-18 (0.7.5)
========================
* Dynamic Follow 更新模型。(感謝 @ShaneSmiskol 提供代碼、 @cgw1968 測試)
* Updated Dynamic Follow model. (Special Thanks to @ShaneSmiskol for the feature and @cgw1968 for testing)
2020-05-30 (0.7.5)
========================
* Dynamic Follow 更新至 ShaneSmiskol:stock_additions 0.7.5 版。(感謝 @ShaneSmiskol 提供代碼、 @Wei 測試)
* Updated Dynamic Follow to ShaneSmiskol:stock_additions 0.7.5. (Special Thanks to @ShaneSmiskol for the feature and @Wei for testing)
2020-05-28 (0.7.5)
========================
* 優化 Lexus GSH 轉向。(感謝 @簡銘佑 測試)
* Optimize Lexus GSH steering. (Thanks to @簡銘佑)
* C2 支援自動關機「DragonAutoShutdownAt」參數。(感謝 @cgw1968 建議)
* C2 to support auto shutdown "DragonAutoShutDownAt" param. (Thanks to @cgw1968)
* 修正出現「pedalPressed」的錯誤。(感謝 @Wei 回報)
* Fixed issue showing "pedalPressed" error. (Thanks to @Wei)
2020-05-26 (0.7.5)
========================
* 將剎車狀熊顯示於 dp 資訊欄。
* Added brake indicator to dp infobar.
* 修正「溫度監控」燈示。
* Fixed "Temp monitor" indicator.
* 加入「方向燈取消控制」延遲控制設。(感謝 @wabes 建議)
* Added delay config to "Disable Lat Control on Blinker". (Thanks to @wabes)
* 加入巴西版 2020 Corolla Hybrid 指紋v2。(感謝 @berno22 提供)
* Added Brazil 2020 Corolla Hybrid FPv2. (Thanks to @berno22)
2020-05-25 (0.7.5)
========================
* 加入對 VW MQB/PQ 的支援。(感謝 @dingliangxue 移植)
* Added support to VW MQB/PQ platform. (Thanks to @dingliangxue)
2020-05-21 (0.7.5)
========================
* 修改成 3 小時後停止供電。(感謝 @Wei 建議)
* Updated to stop charging after 3 hrs. (Thanks to @Wei)
* 移除行車記錄下的「碰撞偵測」功能。
* Removed Impact Detection in Dashcam.
* 修正開啟「Noctua 風扇」模式導致的錯誤。(感謝 @阿濤 回報)
* Fixed a bug caused by enabling "Noctua Mod". (Thanks to @阿濤)
* 修正「位智模式」無法顯示警示的問題。(感謝 @axandres 回報)
* Fixed alert issue in waze mode. (Thanks to @axandres)
* 修正無法顯示更新中圖示的問題。
* Fixed unable to display "UPDATING" icon issue.
2020-05-20 (0.7.5)
========================
* 加入「允許多次自動換道」功能。(感謝 @阿濤 建議)
* Added "Allow Continuous Auto Lane Change" Toggle. (Thanks to @阿濤)
* 修正開機後設定頁面有時會錯誤的問題。(感謝 @salmankhan@Wei 回報)
* Fixed setting page crash issue. (Thanks to @salmankhan, @Wei)
* 修正熄火後一直出現更新訊息的錯誤。(感謝 @Sky Chang 回報)
* Fixed issue that keep showing update prompt. (Thanks to @Sky Chang)
2020-05-19 (0.7.5)
========================
* 加入 DragonEnableAutoUpdate 預設值。
* Added DragonEnableAutoUpdate default value.
2020-05-18 (0.7.5)
========================
* 修正因同時使用「社群功能」和「自定車型」造成的加減速問題。(特別感謝 @Wei@Sky Chang、@Han9365@鄧育林 的測試以及回報。)
* Fixed acceleration issue caused by used of both "Community Maintain Feature" and "Custom Car Model"
2020-05-16 (0.7.5)
========================
* 新增 DragonMaxSpeedLimit 設定值 (mph),當如果車速高於此值 op 將會停止操控。(感謝 @Anthony 建議)
* Added DragonMaxSpeedLimit parameter (mph), op will stop controlling when car speed is high than the value. (Thanks to @Anthony)
* 更新 appd 使用 cnpmjs 來下載 APKs。
* Updated appd to use cnpmjs to download APKs.
* 修正更新服務。(感謝 @Wei)
* Fixed Update Service. (Thanks to @Wei)
* 新增加拿大版 2018 Toyota Sienna LTD 指紋(v2)。(感謝 明峰 提供)
* Added Canada 2018 Toyota Sienna LTD fingerprint (v2). (Thanks to 明峰)
2020-05-15 (0.7.5)
========================
* 新增「通過移動網路上傳」開關
* Added Upload Over Mobile Network toggle.
* 新增「通過熱點上傳」開關
* Added Upload Over Hotspot toggle.
* 新增加拿大版 2018 Toyota Sienna LTD 指紋(v1)。(感謝 明峰 提供)
* Added Canada 2018 Toyota Sienna LTD fingerprint (v1). (Thanks to 明峰)
* 新增大陸版 Volkswagen Golf GTI 指紋 (v1)。(感謝 easyeiji 提供)
* Added China Volkswagen Golf GTI fingerprint (v1). (Thanks to easyeiji)
2020-05-10
========================
* 基於最新 openpilot 0.7.5 devel-staging.
* Based on latest openpilot 0.7.5 devel-staging.
* 更新 dp 圖示 (特別感謝 @wabes 的設計與提供)。
* Updated dp logo, special thanks to @wabes for the design.
* 簡/繁中文版和 i18n 整合成為單一版本。
* Merged zhs/zht/i18n versions into one.
* 新增大陸版 CAMRY HYBRID 指紋v2。(感謝 @杜子腾)
* Added China Camry Hybrid FPv2. (Thanks to @杜子腾)
* 新增台灣版 Altis HYBRID 指紋v1。(感謝 @Fish)
* Added Taiwan Altis Hybrid FPv1. (Thanks to @Fish)
* 新增行駛時關閉畫面功能。
* Added Screen off while driving feature.
* 新增倒車時關閉畫面功能。
* Added Screen off while reversing feature.
* 新增駕駛介面加入「加速模式」切換鈕。
* Added acceleration profile toggle onto driving UI.
* 新增自定車型功能,取代指紋暫存功能。
* Replaced fingerprint cache with custom car model selector.
* 新增可調亮度。
* Added Brightness changer.
* 新增部分德語支持。(特別感謝 @arne182 提供)
* Added partial de_DE language support (Thanks to @arne182)
* 新增停車碰撞偵測記錄功能。
* Added off road impact detection to dashcam.

151
Jenkinsfile vendored
View File

@@ -1,33 +1,60 @@
pipeline {
agent {
docker {
image 'python:3.7.3'
args '--user=root'
def phone(String ip, String step_label, String cmd) {
def ci_env = "CI=1 TEST_DIR=${env.TEST_DIR} GIT_BRANCH=${env.GIT_BRANCH} GIT_COMMIT=${env.GIT_COMMIT}"
withCredentials([file(credentialsId: 'id_rsa_public', variable: 'key_file')]) {
sh label: step_label,
script: """
ssh -tt -o StrictHostKeyChecking=no -i ${key_file} -p 8022 root@${ip} '${ci_env} /usr/bin/bash -le' <<'EOF'
echo \$\$ > /dev/cpuset/app/tasks || true
echo \$PPID > /dev/cpuset/app/tasks || true
mkdir -p /dev/shm
chmod 777 /dev/shm
cd ${env.TEST_DIR} || true
${cmd}
exit 0
EOF"""
}
}
def phone_steps(String device_type, steps) {
lock(resource: "", label: device_type, inversePrecedence: true, variable: 'device_ip', quantity: 1) {
timeout(time: 60, unit: 'MINUTES') {
phone(device_ip, "kill old processes", "pkill -f comma || true")
phone(device_ip, "git checkout", readFile("selfdrive/test/setup_device_ci.sh"),)
steps.each { item ->
phone(device_ip, item[0], item[1])
}
}
}
}
pipeline {
agent none
environment {
COMMA_JWT = credentials('athena-test-jwt')
TEST_DIR = "/data/openpilot"
}
stages {
stage('Release Build') {
agent {
docker {
image 'python:3.7.3'
args '--user=root'
}
}
when {
branch 'devel-staging'
}
steps {
lock(resource: "", label: 'eon-build', inversePrecedence: true, variable: 'eon_ip', quantity: 1){
timeout(time: 60, unit: 'MINUTES') {
dir(path: 'selfdrive/test') {
sh 'pip install paramiko'
sh 'python phone_ci.py "cd release && PUSH=1 ./build_release2.sh"'
}
}
}
phone_steps("eon-build", [
["build release2-staging and dashcam-staging", "cd release && PUSH=1 ./build_release2.sh"],
])
}
}
stage('On-device Tests') {
stage('openpilot tests') {
when {
not {
anyOf {
@@ -36,48 +63,80 @@ pipeline {
}
}
parallel {
stage('Build') {
environment {
CI_PUSH = "${env.BRANCH_NAME == 'master' ? 'master-ci' : ''}"
stages {
/*
stage('PC tests') {
agent {
dockerfile {
filename 'Dockerfile.openpilot'
args '--privileged --shm-size=1G --user=root'
}
}
steps {
lock(resource: "", label: 'eon', inversePrecedence: true, variable: 'eon_ip', quantity: 1){
timeout(time: 60, unit: 'MINUTES') {
dir(path: 'selfdrive/test') {
sh 'pip install paramiko'
sh 'python phone_ci.py "cd release && ./build_devel.sh"'
}
stages {
stage('Build') {
steps {
sh 'scons -j$(nproc)'
}
}
}
}
stage('Replay Tests') {
steps {
lock(resource: "", label: 'eon2', inversePrecedence: true, variable: 'eon_ip', quantity: 1){
timeout(time: 60, unit: 'MINUTES') {
dir(path: 'selfdrive/test') {
sh 'pip install paramiko'
sh 'python phone_ci.py "cd selfdrive/test/process_replay && ./camera_replay.py"'
}
}
post {
always {
// fix permissions since docker runs as another user
sh "chmod -R 777 ."
}
}
}
*/
stage('HW Tests') {
steps {
lock(resource: "", label: 'eon', inversePrecedence: true, variable: 'eon_ip', quantity: 1){
timeout(time: 60, unit: 'MINUTES') {
dir(path: 'selfdrive/test') {
sh 'pip install paramiko'
sh 'python phone_ci.py "SCONS_CACHE=1 scons -j3 cereal/ && \
nosetests -s selfdrive/test/test_sounds.py && \
nosetests -s selfdrive/boardd/tests/test_boardd_loopback.py"'
stage('On-device Tests') {
agent {
docker {
image 'python:3.7.3'
args '--user=root'
}
}
stages {
stage('parallel tests') {
parallel {
stage('Devel Build') {
environment {
CI_PUSH = "${env.BRANCH_NAME == 'master' ? 'master-ci' : ' '}"
}
steps {
phone_steps("eon", [
["build devel", "cd release && CI_PUSH=${env.CI_PUSH} ./build_devel.sh"],
["test openpilot", "nosetests -s selfdrive/test/test_openpilot.py"],
["test cpu usage", "cd selfdrive/test/ && ./test_cpu_usage.py"],
["test car interfaces", "cd selfdrive/car/tests/ && ./test_car_interfaces.py"],
["test spinner build", "cd selfdrive/ui/spinner && make clean && make"],
["test text window build", "cd selfdrive/ui/text && make clean && make"],
])
}
}
stage('Replay Tests') {
steps {
phone_steps("eon2", [
["camerad/modeld replay", "cd selfdrive/test/process_replay && ./camera_replay.py"],
])
}
}
stage('HW + Unit Tests') {
steps {
phone_steps("eon", [
["build cereal", "SCONS_CACHE=1 scons -j4 cereal/"],
["test sounds", "nosetests -s selfdrive/test/test_sounds.py"],
["test boardd loopback", "nosetests -s selfdrive/boardd/tests/test_boardd_loopback.py"],
//["test updater", "python installer/updater/test_updater.py"],
])
}
}
}
}
}

View File

@@ -66,7 +66,7 @@ Supported Cars
| ----------| ------------------------------| ------------------| -----------------| -------------------| ------------------|
| Acura | ILX 2016-18 | AcuraWatch Plus | openpilot | 25mph<sup>1</sup> | 25mph |
| Acura | RDX 2016-18 | AcuraWatch Plus | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | Accord 2018-19 | All | Stock | 0mph | 3mph |
| Honda | Accord 2018-20 | All | Stock | 0mph | 3mph |
| Honda | Accord Hybrid 2018-20 | All | Stock | 0mph | 3mph |
| Honda | Civic Hatchback 2017-19 | Honda Sensing | Stock | 0mph | 12mph |
| Honda | Civic Sedan/Coupe 2016-18 | Honda Sensing | openpilot | 0mph | 12mph |
@@ -76,7 +76,7 @@ Supported Cars
| Honda | CR-V Hybrid 2017-2019 | Honda Sensing | Stock | 0mph | 12mph |
| Honda | Fit 2018-19 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | HR-V 2019 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | Insight 2019 | Honda Sensing | Stock | 0mph | 3mph |
| Honda | Insight 2019-20 | Honda Sensing | Stock | 0mph | 3mph |
| Honda | Odyssey 2018-20 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 0mph |
| Honda | Passport 2019 | All | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | Pilot 2016-18 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 12mph |
@@ -136,6 +136,7 @@ Community Maintained Cars and Features
| Chrysler | Pacifica 2020 | Adaptive Cruise | Stock | 0mph | 39mph |
| Chrysler | Pacifica Hybrid 2017-18 | Adaptive Cruise | Stock | 0mph | 9mph |
| Chrysler | Pacifica Hybrid 2019-20 | Adaptive Cruise | Stock | 0mph | 39mph |
| Genesis | G70 2018 | All | Stock | 0mph | 0mph |
| Genesis | G80 2018 | All | Stock | 0mph | 0mph |
| Genesis | G90 2018 | All | Stock | 0mph | 0mph |
| GMC | Acadia Denali 2018<sup>2</sup>| Adaptive Cruise | openpilot | 0mph | 7mph |
@@ -144,11 +145,12 @@ Community Maintained Cars and Features
| Hyundai | Genesis 2015-16 | SCC + LKAS | Stock | 19mph | 37mph |
| Hyundai | Ioniq Electric Premium SE 2020| SCC + LKAS | Stock | 0mph | 32mph |
| Hyundai | Ioniq Electric Limited 2019 | SCC + LKAS | Stock | 0mph | 32mph |
| Hyundai | Kona 2017-19 | SCC + LKAS | Stock | 22mph | 0mph |
| Hyundai | Kona 2020 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Kona EV 2019 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Palisade 2020 | All | Stock | 0mph | 0mph |
| Hyundai | Santa Fe 2019 | All | Stock | 0mph | 0mph |
| Hyundai | Sonata 2019 | All | Stock | 0mph | 0mph |
| Hyundai | Veloster 2019 | SCC + LKAS | Stock | 5mph | 0mph |
| Jeep | Grand Cherokee 2016-18 | Adaptive Cruise | Stock | 0mph | 9mph |
| Jeep | Grand Cherokee 2019-20 | Adaptive Cruise | Stock | 0mph | 39mph |
| Kia | Forte 2018-19 | SCC + LKAS | Stock | 0mph | 0mph |
@@ -156,9 +158,9 @@ Community Maintained Cars and Features
| Kia | Optima 2019 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Sorento 2018 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Stinger 2018 | SCC + LKAS | Stock | 0mph | 0mph |
| Nissan | Leaf 2018-19<sup>2</sup> | Propilot | Stock | 0mph | 0mph |
| Nissan | Rogue 2019<sup>2</sup> | Propilot | Stock | 0mph | 0mph |
| Nissan | X-Trail 2017<sup>2</sup> | Propilot | Stock | 0mph | 0mph |
| Nissan | Leaf 2018-19 | Propilot | Stock | 0mph | 0mph |
| Nissan | Rogue 2019 | Propilot | Stock | 0mph | 0mph |
| Nissan | X-Trail 2017 | Propilot | Stock | 0mph | 0mph |
| Subaru | Ascent 2019 | EyeSight | Stock | 0mph | 0mph |
| Subaru | Crosstrek 2018-19 | EyeSight | Stock | 0mph | 0mph |
| Subaru | Forester 2019 | EyeSight | Stock | 0mph | 0mph |

View File

@@ -1,3 +1,10 @@
Version 0.7.8 (2020-08-19)
========================
* New driver monitoring model: improved face detection and better compatibility with sunglasses
* Download NEOS operating system updates in the background
* Improved updater reliability and responsiveness
* Hyundai Kona 2020, Veloster 2019, and Genesis G70 2018 support thanks to xps-genesis!
Version 0.7.7 (2020-07-20)
========================
* White panda is no longer supported, upgrade to comma two or black panda

View File

@@ -1,3 +1,5 @@
import Cython
import distutils
import os
import shutil
import subprocess
@@ -12,6 +14,10 @@ AddOption('--asan',
action='store_true',
help='turn on ASAN')
# Rebuild cython extensions if python, distutils, or cython change
cython_dependencies = [Value(v) for v in (sys.version, distutils.__version__, Cython.__version__)]
Export('cython_dependencies')
arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
if platform.system() == "Darwin":
arch = "Darwin"

Binary file not shown.

View File

@@ -1,35 +1,34 @@
Import('env', 'arch', 'zmq')
Import('env', 'arch', 'zmq', 'cython_dependencies')
import shutil
gen_dir = Dir('gen')
messaging_dir = Dir('messaging')
# TODO: remove src-prefix and cereal from command string. can we set working directory?
env.Command(["gen/c/include/c++.capnp.h", "gen/c/include/java.capnp.h"], [], "mkdir -p " + gen_dir.path + "/c/include && touch $TARGETS")
env.Command(
['gen/cpp/car.capnp.c++', 'gen/cpp/log.capnp.c++', 'gen/cpp/car.capnp.h', 'gen/cpp/log.capnp.h'],
['car.capnp', 'log.capnp'],
'capnpc $SOURCES --src-prefix=cereal -o c++:' + gen_dir.path + '/cpp/')
import shutil
env.Command(['gen/cpp/car.capnp.c++', 'gen/cpp/log.capnp.c++', 'gen/cpp/car.capnp.h', 'gen/cpp/log.capnp.h'],
['car.capnp', 'log.capnp'],
'capnpc $SOURCES --src-prefix=cereal -o c++:' + gen_dir.path + '/cpp/')
if shutil.which('capnpc-java'):
env.Command(
['gen/java/Car.java', 'gen/java/Log.java'],
['car.capnp', 'log.capnp'],
'capnpc $SOURCES --src-prefix=cereal -o java:' + gen_dir.path + '/java/')
env.Command(['gen/java/Car.java', 'gen/java/Log.java'],
['car.capnp', 'log.capnp'],
'capnpc $SOURCES --src-prefix=cereal -o java:' + gen_dir.path + '/java/')
# TODO: remove non shared cereal and messaging
cereal_objects = env.SharedObject([
'gen/cpp/car.capnp.c++',
'gen/cpp/log.capnp.c++',
])
'gen/cpp/car.capnp.c++',
'gen/cpp/log.capnp.c++',
])
env.Library('cereal', cereal_objects)
env.SharedLibrary('cereal_shared', cereal_objects)
cereal_dir = Dir('.')
services_h = env.Command(
['services.h'],
['service_list.yaml', 'services.py'],
'python3 ' + cereal_dir.path + '/services.py > $TARGET')
services_h = env.Command(['services.h'],
['service_list.yaml', 'services.py'],
'python3 ' + cereal_dir.path + '/services.py > $TARGET')
messaging_objects = env.SharedObject([
'messaging/messaging.cc',
@@ -56,9 +55,9 @@ Depends('messaging/bridge.cc', services_h)
#env.Program('messaging/demo', ['messaging/demo.cc'], LIBS=[messaging_lib, 'zmq'])
env.Command(['messaging/messaging_pyx.so'],
[messaging_lib, 'messaging/messaging_pyx_setup.py', 'messaging/messaging_pyx.pyx', 'messaging/messaging.pxd'],
"cd " + messaging_dir.path + " && python3 messaging_pyx_setup.py build_ext --inplace")
env.Command(['messaging/messaging_pyx.so', 'messaging/messaging_pyx.cpp'],
cython_dependencies + [messaging_lib, 'messaging/messaging_pyx_setup.py', 'messaging/messaging_pyx.pyx', 'messaging/messaging.pxd'],
"cd " + messaging_dir.path + " && python3 messaging_pyx_setup.py build_ext --inplace")
if GetOption('test'):

View File

@@ -112,6 +112,15 @@ struct CarEvent @0x9b1657f34caf3ad3 {
wrongCruiseMode @87;
neosUpdateRequired @88;
modeldLagging @89;
deviceFalling @90;
#dp
preLaneChangeLeftALC @91;
preLaneChangeRightALC @92;
laneChangeALC @93;
manualSteeringRequired @94;
manualSteeringRequiredBlinkersOn @95;
leadCarMoving @96;
}
}
@@ -179,6 +188,9 @@ struct CarState {
leftBlindspot @33 :Bool; # Is there something blocking the left lane change
rightBlindspot @34 :Bool; # Is there something blocking the right lane change
# dp
lkMode @37 :Bool;
struct WheelSpeeds {
# optional wheel speeds
fl @0 :Float32;
@@ -474,6 +486,7 @@ struct CarParams {
volkswagenPq @21;
subaruLegacy @22; # pre-Global platform
hyundaiLegacy @23;
hyundaiCommunity @24;
}
enum SteerControlType {

View File

@@ -441,18 +441,22 @@ struct RadarState @0x9a185389d6fdd05f {
struct LiveCalibrationData {
# deprecated
warpMatrix @0 :List(Float32);
# camera_frame_from_model_frame
warpMatrix2 @5 :List(Float32);
warpMatrixBig @6 :List(Float32);
calStatus @1 :Int8;
calCycle @2 :Int32;
calPerc @3 :Int8;
validBlocks @9 :Int32;
# view_frame_from_road_frame
# ui's is inversed needs new
extrinsicMatrix @4 :List(Float32);
# the direction of travel vector in device frame
rpyCalib @7 :List(Float32);
rpyCalibSpread @8 :List(Float32);
}
struct LiveTracks {
@@ -803,6 +807,9 @@ struct PathPlan {
laneChangeState @18 :LaneChangeState;
laneChangeDirection @19 :LaneChangeDirection;
# dp
dpALCAllowed @20 :Bool;
enum Desire {
none @0;
turnLeft @1;
@@ -864,6 +871,7 @@ struct LiveLocationKalman {
posenetOK @18 :Bool = true;
gpsOK @19 :Bool = true;
sensorsOK @21 :Bool = true;
deviceStable @22 :Bool = true;
enum Status {
uninitialized @0;
@@ -2057,5 +2065,83 @@ struct Event {
dMonitoringState @71: DMonitoringState;
liveLocationKalman @72 :LiveLocationKalman;
sentinel @73 :Sentinel;
dragonConf @74 :DragonConf;
}
}
# dp
struct DragonConf {
dpAtl @0 :Bool;
dpAppWaze @1 :Bool;
dpAppWazeManual @2 :Int8;
dpDashcam @3 :Bool;
dpDashcamHoursStored @4 :UInt8;
dpAutoShutdown @5 :Bool;
dpAutoShutdownIn @6 :UInt16;
dpAthenad @7 :Bool;
dpUploader @8 :Bool;
dpUploadOnMobile @9 :Bool;
dpUploadOnHotspot @10 :Bool;
dpLatCtrl @11 :Bool;
dpSteeringLimitAlert @12 :Bool;
dpSteeringOnSignal @13 :Bool;
dpSignalOffDelay @14 :UInt8;
dpAssistedLcMinMph @15 :Float32;
dpAutoLc @16 :Bool;
dpAutoLcCont @17 :Bool;
dpAutoLcMinMph @18 :Float32;
dpAutoLcDelay @19 :Float32;
dpSlowOnCurve @20 :Bool;
dpAllowGas @21 :Bool;
dpMaxCtrlSpeed @22 :Float32;
dpLeadCarAlert @23 :Bool;
dpDynamicFollow @24 :UInt8;
dpAccelProfile @25 :UInt8;
dpDriverMonitor @26 :Bool;
dpSteeringMonitor @27 :Bool;
dpSteeringMonitorTimer @28 :UInt8;
dpGearCheck @29 :Bool;
dpTempMonitor @30 :Bool;
dpDrivingUi @31 :Bool;
dpUiScreenOffReversing @32 :Bool;
dpUiScreenOffDriving @33 :Bool;
dpUiSpeed @34 :Bool;
dpUiEvent @35 :Bool;
dpUiMaxSpeed @36 :Bool;
dpUiFace @37 :Bool;
dpUiLane @38 :Bool;
dpUiPath @39 :Bool;
dpUiLead @40 :Bool;
dpUiDev @41 :Bool;
dpUiDevMini @42 :Bool;
dpUiBlinker @43 :Bool;
dpUiBrightness @44 :UInt8;
dpUiVolumeBoost @45 :Int8;
dpAppAutoUpdate @46 :Bool;
dpAppExtGps @47 :Bool;
dpAppTomtom @48 :Bool;
dpAppTomtomAuto @49 :Bool;
dpAppTomtomManual @50 :Int8;
dpAppAutonavi @51 :Bool;
dpAppAutonaviAuto @52 :Bool;
dpAppAutonaviManual @53 :Int8;
dpAppAegis @54 :Bool;
dpAppAegisAuto @55 :Bool;
dpAppAegisManual @56 :Int8;
dpAppMixplorer @57 :Bool;
dpAppMixplorerManual @58 :Int8;
dpToyotaLdw @59 :Bool;
dpToyotaSng @60 :Bool;
dpToyotaLowestCruiseOverride @61 :Bool;
dpToyotaLowestCruiseOverrideAt @62 :Float32;
dpToyotaLowestCruiseOverrideSpeed @63 :Float32;
dpIpAddr @64 :Text;
dpCameraOffset @65 :Int8;
dpLocale @66 :Text;
dpChargingCtrl @67 :Bool;
dpChargingAt @68 :UInt8;
dpDischargingAt @69 :UInt8;
dpIsUpdating @70 :Bool;
dpThermalStarted @71 :Bool;
dpThermalOverheat @72 :Bool;
}

View File

@@ -122,13 +122,6 @@ def recv_one_retry(sock):
if dat is not None:
return log.Event.from_bytes(dat)
# TODO: This does not belong in messaging
def get_one_can(logcan):
while True:
can = recv_one_retry(logcan)
if len(can.can) > 0:
return can
class SubMaster():
def __init__(self, services, ignore_alive=None, addr="127.0.0.1"):
self.poller = Poller()

View File

@@ -59,34 +59,36 @@ public:
};
class SubMaster {
public:
public:
SubMaster(const std::initializer_list<const char *> &service_list,
const char *address = nullptr, const std::initializer_list<const char *> &ignore_alive = {});
int update(int timeout = 1000);
inline bool allAlive(const std::initializer_list<const char *> &service_list = {}) { return all_(service_list, false, true); }
inline bool allValid(const std::initializer_list<const char *> &service_list = {}) { return all_(service_list, true, false); }
inline bool allAliveAndValid(const std::initializer_list<const char *> &service_list = {}) { return all_(service_list, true, true); }
bool updated(const char *name) const;
void drain();
cereal::Event::Reader &operator[](const char *name);
~SubMaster();
private:
uint64_t frame = 0;
bool updated(const char *name) const;
uint64_t rcv_frame(const char *name) const;
cereal::Event::Reader &operator[](const char *name);
private:
bool all_(const std::initializer_list<const char *> &service_list, bool valid, bool alive);
Poller *poller_ = nullptr;
uint64_t frame_ = 0;
struct SubMessage;
std::map<SubSocket *, SubMessage *> messages_;
std::map<std::string, SubMessage *> services_;
};
class PubMaster {
public:
public:
PubMaster(const std::initializer_list<const char *> &service_list);
inline int send(const char *name, capnp::byte *data, size_t size) { return sockets_.at(name)->send((char *)data, size); }
int send(const char *name, capnp::MessageBuilder &msg);
~PubMaster();
private:
private:
std::map<std::string, PubSocket *> sockets_;
};

View File

@@ -39,7 +39,7 @@ if ARCH == "aarch64" and os.path.isdir("/system"):
extra_compile_args += ["-Wno-deprecated-register"]
libraries += ['gnustl_shared']
setup(name='CAN parser',
setup(name='messaging',
cmdclass={'build_ext': BuildExtWithoutPlatformSuffix},
ext_modules=cythonize(
Extension(
@@ -51,7 +51,7 @@ setup(name='CAN parser',
extra_objects=[
os.path.join(os.path.dirname(os.path.realpath(__file__)), '../', 'libmessaging.a'),
]
)
),
nthreads=4,
),
nthreads=4,
)

View File

@@ -2,20 +2,24 @@
#include <time.h>
#include "messaging.hpp"
#include "services.h"
#ifdef __APPLE__
#define CLOCK_BOOTTIME CLOCK_MONOTONIC
#endif
static inline uint64_t nanos_since_boot() {
struct timespec t;
clock_gettime(CLOCK_BOOTTIME, &t);
return t.tv_sec * 1000000000ULL + t.tv_nsec;
}
static const service *get_service(const char *name) {
for (const auto &it : services) {
if (strcmp(it.name, name) == 0) return &it;
}
return nullptr;
}
static inline bool inList(const std::initializer_list<const char *> &list, const char *value) {
for (auto &v : list) {
if (strcmp(value, v) == 0) return true;
@@ -24,7 +28,7 @@ static inline bool inList(const std::initializer_list<const char *> &list, const
}
class MessageContext {
public:
public:
MessageContext() { ctx_ = Context::create(); }
~MessageContext() { delete ctx_; }
Context *ctx_;
@@ -53,18 +57,18 @@ SubMaster::SubMaster(const std::initializer_list<const char *> &service_list, co
assert(socket != 0);
poller_->registerSocket(socket);
SubMessage *m = new SubMessage{
.socket = socket,
.freq = serv->frequency,
.ignore_alive = inList(ignore_alive, name),
.allocated_msg_reader = malloc(sizeof(capnp::FlatArrayMessageReader)),
.buf = kj::heapArray<capnp::word>(1024)};
.socket = socket,
.freq = serv->frequency,
.ignore_alive = inList(ignore_alive, name),
.allocated_msg_reader = malloc(sizeof(capnp::FlatArrayMessageReader)),
.buf = kj::heapArray<capnp::word>(1024)};
messages_[socket] = m;
services_[name] = m;
}
}
int SubMaster::update(int timeout) {
if (++frame_ == UINT64_MAX) frame_ = 1;
if (++frame == UINT64_MAX) frame = 1;
for (auto &kv : messages_) kv.second->updated = false;
int updated = 0;
@@ -89,7 +93,7 @@ int SubMaster::update(int timeout) {
m->event = m->msg_reader->getRoot<cereal::Event>();
m->updated = true;
m->rcv_time = current_time;
m->rcv_frame = frame_;
m->rcv_frame = frame;
m->valid = m->event.getValid();
++updated;
@@ -126,8 +130,17 @@ void SubMaster::drain() {
}
}
bool SubMaster::updated(const char *name) const { return services_.at(name)->updated; }
cereal::Event::Reader &SubMaster::operator[](const char *name) { return services_.at(name)->event; };
bool SubMaster::updated(const char *name) const {
return services_.at(name)->updated;
}
uint64_t SubMaster::rcv_frame(const char *name) const {
return services_.at(name)->rcv_frame;
}
cereal::Event::Reader &SubMaster::operator[](const char *name) {
return services_.at(name)->event;
};
SubMaster::~SubMaster() {
delete poller_;

View File

@@ -63,7 +63,7 @@ orbOdometry: [8057, true, 0.]
orbFeatures: [8058, false, 0.]
orbKeyFrame: [8059, true, 0.]
uiLayoutState: [8060, true, 0.]
frontEncodeIdx: [8061, true, 5.]
frontEncodeIdx: [8061, true, 5.] # should be 20fps on tici
orbFeaturesSummary: [8062, true, 0.]
driverState: [8063, true, 5., 1]
liveParameters: [8064, true, 20., 2]
@@ -77,6 +77,9 @@ carParams: [8071, true, 0.02, 1]
frontFrame: [8072, true, 10.]
dMonitoringState: [8073, true, 5., 1]
offroadLayout: [8074, false, 0.]
wideEncodeIdx: [8075, true, 20.]
dragonConf: [8088, false, 2.]
testModel: [8040, false, 0.]
testLiveLocation: [8045, false, 0.]

View File

@@ -1,6 +1,6 @@
Import('env')
Import('env', 'cython_dependencies')
# parser
env.Command(['common_pyx.so'],
['common_pyx_setup.py', 'clock.pyx'],
"cd common && python3 common_pyx_setup.py build_ext --inplace")
# Build cython clock module
env.Command(['common_pyx.so', 'clock.cpp'],
cython_dependencies + ['common_pyx_setup.py', 'clock.pyx'],
"cd common && python3 common_pyx_setup.py build_ext --inplace")

42
common/dp_common.py Normal file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env python3.7
import subprocess
from cereal import car
from common.params import Params
params = Params()
def is_online():
try:
return not subprocess.call(["ping", "-W", "4", "-c", "1", "117.28.245.92"])
except ProcessLookupError:
return False
def common_controller_ctrl(enabled, dragon_lat_ctrl, dragon_enable_steering_on_signal, blinker_on, steer_req):
if enabled:
if (dragon_enable_steering_on_signal and blinker_on) or not dragon_lat_ctrl:
steer_req = 0 if isinstance(steer_req, int) else False
return steer_req
def common_interface_atl(ret, atl):
# dp
enable_acc = ret.cruiseState.enabled
if atl and ret.cruiseState.available:
enable_acc = True
if ret.gearShifter in [car.CarState.GearShifter.reverse, car.CarState.GearShifter.park]:
enable_acc = False
if ret.seatbeltUnlatched or ret.doorOpen:
enable_acc = False
return enable_acc
def common_interface_get_params_lqr(ret):
if params.get('dp_lqr') == b'1':
ret.lateralTuning.init('lqr')
ret.lateralTuning.lqr.scale = 1500.0
ret.lateralTuning.lqr.ki = 0.05
ret.lateralTuning.lqr.a = [0., 1., -0.22619643, 1.21822268]
ret.lateralTuning.lqr.b = [-1.92006585e-04, 3.95603032e-05]
ret.lateralTuning.lqr.c = [1., 0.]
ret.lateralTuning.lqr.k = [-110.73572306, 451.22718255]
ret.lateralTuning.lqr.l = [0.3233671, 0.3185757]
ret.lateralTuning.lqr.dcGain = 0.002237852961363602
return ret

238
common/dp_conf.py Normal file
View File

@@ -0,0 +1,238 @@
#!/usr/bin/env python3.7
import os
import json
import time
from math import floor
from common.android import getprop
confs = [
{'name': 'dp_atl', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct'], 'update_once': True},
# waze
{'name': 'dp_app_waze', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_app_waze_manual', 'default': 0, 'type': 'Int8', 'min': -1, 'max': 1, 'depends': [{'name': 'dp_app_waze', 'vals': [True]}], 'conf_type': ['param', 'struct']},
# dashcam related
{'name': 'dp_dashcam', 'default': 0, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_dashcam_hours_stored', 'default': 24, 'type': 'UInt8', 'min': 1, 'max': 255, 'depends': [{'name': 'dp_dashcam', 'vals': [True]}], 'conf_type': ['param', 'struct']},
# auto shutdown related
{'name': 'dp_auto_shutdown', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_auto_shutdown_in', 'default': 90, 'type': 'UInt16', 'min': 1, 'max': 65535, 'depends': [{'name': 'dp_auto_shutdown', 'vals': [True]}], 'conf_type': ['param', 'struct']},
# service
{'name': 'dp_logger', 'default': True, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_athenad', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_uploader', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_upload_on_mobile', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_uploader', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_upload_on_hotspot', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_uploader', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_updated', 'default': True, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_gpxd', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_hotspot_on_boot', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# lat ctrl
{'name': 'dp_lat_ctrl', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_steering_limit_alert', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_lat_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_steering_on_signal', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_lat_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_signal_off_delay', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 10, 'conf_type': ['param', 'struct']},
# assist/auto lane change
{'name': 'dp_assisted_lc_min_mph', 'default': 45, 'type': 'Float32', 'min': 0, 'max': 255., 'conf_type': ['param', 'struct']},
{'name': 'dp_auto_lc', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_auto_lc_cont', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_auto_lc', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_auto_lc_min_mph', 'default': 60, 'type': 'Float32', 'min': 0, 'max': 255., 'depends': [{'name': 'dp_auto_lc', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_auto_lc_delay', 'default': 3, 'type': 'Float32', 'min': 0, 'max': 10., 'depends': [{'name': 'dp_auto_lc', 'vals': [True]}], 'conf_type': ['param', 'struct']},
# long ctrl
{'name': 'dp_slow_on_curve', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_allow_gas', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_max_ctrl_speed', 'default': 92., 'type': 'Float32', 'conf_type': ['param', 'struct']},
{'name': 'dp_lead_car_alert', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_dynamic_follow', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 4, 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_accel_profile', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 3, 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
# safety
{'name': 'dp_driver_monitor', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_steering_monitor', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_driver_monitor', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_steering_monitor_timer', 'default': 70, 'type': 'UInt8', 'min': 70, 'max': 360, 'depends': [{'name': 'dp_driver_monitor', 'vals': [False]}, {'name': 'dp_steering_monitor', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_gear_check', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_temp_monitor', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
# UIs
{'name': 'dp_driving_ui', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_screen_off_reversing', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_screen_off_driving', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_speed', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_driving_ui', 'vals': [True]}, {'name': 'dp_ui_screen_off_driving', 'vals': [False]}, {'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_event', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_driving_ui', 'vals': [True]}, {'name': 'dp_ui_screen_off_driving', 'vals': [False]}, {'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_max_speed', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_driving_ui', 'vals': [True]}, {'name': 'dp_ui_screen_off_driving', 'vals': [False]}, {'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_face', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_driving_ui', 'vals': [True]}, {'name': 'dp_driver_monitor', 'vals': [True]}, {'name': 'dp_ui_screen_off_driving', 'vals': [False]}, {'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_lane', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_driving_ui', 'vals': [True]}, {'name': 'dp_ui_screen_off_driving', 'vals': [False]}, {'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_path', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_driving_ui', 'vals': [True]}, {'name': 'dp_ui_screen_off_driving', 'vals': [False]}, {'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_lead', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_driving_ui', 'vals': [True]}, {'name': 'dp_ui_screen_off_driving', 'vals': [False]}, {'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_dev', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_dev_mini', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_blinker', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_driving_ui', 'vals': [True]}, {'name': 'dp_ui_screen_off_driving', 'vals': [False]}, {'name': 'dp_app_waze', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_brightness', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 100, 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_volume_boost', 'default': 0, 'type': 'Int8', 'min': -100, 'max': 100, 'conf_type': ['param', 'struct']},
# Apps
{'name': 'dp_app_auto_update', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_app_ext_gps', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_app_tomtom', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_app_tomtom_auto', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_app_tomtom', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_app_tomtom_manual', 'default': 0, 'type': 'Int8', 'min': -1, 'max': 1, 'depends': [{'name': 'dp_app_tomtom', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_app_autonavi', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_app_autonavi_auto', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_app_autonavi', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_app_autonavi_manual', 'default': 0, 'type': 'Int8', 'min': -1, 'max': 1, 'depends': [{'name': 'dp_app_autonavi', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_app_aegis', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_app_aegis_auto', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_app_aegis', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_app_aegis_manual', 'default': 0, 'type': 'Int8', 'min': -1, 'max': 1, 'depends': [{'name': 'dp_app_aegis', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_app_mixplorer', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_app_mixplorer_manual', 'default': 0, 'type': 'Int8', 'min': -1, 'max': 1, 'depends': [{'name': 'dp_app_mixplorer', 'vals': [True]}], 'conf_type': ['param', 'struct']},
# toyota
{'name': 'dp_toyota_ldw', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_toyota_sng', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_toyota_zss', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_toyota_lowest_cruise_override', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_toyota_lowest_cruise_override_at', 'default': 44, 'type': 'Float32', 'depends': [{'name': 'dp_toyota_lowest_cruise_override', 'vals': [True]}], 'min': 0, 'max': 255., 'conf_type': ['param', 'struct']},
{'name': 'dp_toyota_lowest_cruise_override_speed', 'default': 32, 'type': 'Float32', 'depends': [{'name': 'dp_toyota_lowest_cruise_override_speed', 'vals': [True]}], 'min': 0, 'max': 255., 'conf_type': ['param', 'struct']},
# custom car
{'name': 'dp_car_selected', 'default': '', 'type': 'Text', 'conf_type': ['param']},
{'name': 'dp_car_list', 'default': '', 'type': 'Text', 'conf_type': ['param']},
{'name': 'dp_car_detected', 'default': '', 'type': 'Text', 'conf_type': ['param']},
#misc
{'name': 'dp_ip_addr', 'default': '', 'type': 'Text', 'conf_type': ['struct']},
{'name': 'dp_full_speed_fan', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_uno_fan_mode', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_last_modified', 'default': str(floor(time.time())), 'type': 'Text', 'conf_type': ['param']},
{'name': 'dp_camera_offset', 'default': 6, 'type': 'Int8', 'min': -255, 'max': 255, 'conf_type': ['param', 'struct']},
{'name': 'dp_locale', 'default': getprop("persist.sys.locale").rstrip('\n'), 'type': 'Text', 'conf_type': ['param', 'struct'], 'update_once': True},
{'name': 'dp_disable_relay', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_charging_ctrl', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_charging_at', 'default': 60, 'type': 'UInt8', 'min': 0, 'max': 100, 'depends': [{'name': 'dp_charging_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_discharging_at', 'default': 70, 'type': 'UInt8', 'min': 0, 'max': 100, 'depends': [{'name': 'dp_charging_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_reg', 'default': True, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_is_updating', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_sr_learner', 'default': True, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_lqr', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_reset_live_param_on_start', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# including thermal data
{'name': 'dp_thermal_started', 'default': False, 'type': 'Bool', 'conf_type': ['struct']},
{'name': 'dp_thermal_overheat', 'default': False, 'type': 'Bool', 'conf_type': ['struct']},
]
def get_definition(name):
for conf in confs:
if conf['name'] == name:
return conf
return None
def to_param_val(name, val):
conf = get_definition(name)
if conf is not None:
type = conf['type'].lower()
try:
if 'bool' in type:
val = '1' if val else '0'
elif 'int' in type:
val = int(val)
elif 'float' in type:
val = float(val)
return str(val)
except (ValueError, TypeError):
return ''
return ''
def to_struct_val(name, val):
conf = get_definition(name)
if conf is not None:
try:
type = conf['type'].lower()
if 'bool' in type:
val = True if val == '1' else False
elif 'int' in type:
val = int(val)
elif 'float' in type:
val = float(val)
return val
except (ValueError, TypeError):
return None
return None
'''
function to convert param name into struct name.
'''
def get_struct_name(snake_str):
components = snake_str.split('_')
# We capitalize the first letter of each component except the first one
# with the 'title' method and join them together.
return components[0] + ''.join(x.title() for x in components[1:])
'''
function to generate struct for log.capnp
'''
def gen_log_struct():
count = 0
str = "# dp\n"
str += "struct DragonConf {\n"
for conf in confs:
name = get_struct_name(conf['name'])
if 'struct' in conf['conf_type']:
str += f" {name} @{count} :{conf['type']};\n"
count += 1
str += "}"
print(str)
'''
function to append new keys to params.py
'''
def init_params_keys(keys, type):
for conf in confs:
if 'param' in conf['conf_type']:
keys[conf['name']] = type
return keys
'''
function to generate support car list
'''
def get_support_car_list():
attrs = ['FINGERPRINTS', 'FW_VERSIONS']
cars = dict()
for car_folder in [x[0] for x in os.walk('/data/openpilot/selfdrive/car')]:
try:
car_name = car_folder.split('/')[-1]
if car_name != "mock":
names = []
for attr in attrs:
values = __import__('selfdrive.car.%s.values' % car_name, fromlist=[attr])
if hasattr(values, attr):
attr_values = getattr(values, attr)
else:
continue
if isinstance(attr_values, dict):
for f, v in attr_values.items():
if f not in names:
names.append(f)
names.sort()
cars[car_name] = names
except (ImportError, IOError, ValueError):
pass
return json.dumps(cars)
'''
function to init param value.
should add this into manager.py
'''
def init_params_vals(params, put_nonblocking):
for conf in confs:
if 'param' in conf['conf_type']:
if conf['name'] == 'dp_car_list':
params.put(conf['name'], get_support_car_list())
elif params.get(conf['name']) is None:
print('name: %s' % conf['name'])
print('to_param_val: %s' % to_param_val(conf['name'], conf['default']))
params.put(conf['name'], to_param_val(conf['name'], conf['default']))
'''
function to conditionally update params
should add this after init_params_vals
'''
def update_params_vals(params):
pass
if __name__ == "__main__":
gen_log_struct()

12
common/i18n.py Normal file
View File

@@ -0,0 +1,12 @@
import gettext
from common import android
is_android = android.ANDROID
locale_dir = '/data/openpilot/selfdrive/assets/locales'
supported_language = ['en-US', 'zh-TW', 'zh-CN', 'ja-JP', 'ko-KR']
locale = android.getprop("persist.sys.locale") if is_android else 'en-US'
def events():
i18n = gettext.translation('events', localedir=locale_dir, fallback=True, languages=[locale])
i18n.install()
return i18n.gettext

View File

@@ -1,6 +1,6 @@
Import('env')
Import('env', 'cython_dependencies')
env.Command(['simple_kalman_impl.so'],
['simple_kalman_impl.pyx', 'simple_kalman_impl.pxd', 'simple_kalman_setup.py'],
"cd common/kalman && python3 simple_kalman_setup.py build_ext --inplace")
cython_dependencies + ['simple_kalman_impl.pyx', 'simple_kalman_impl.pxd', 'simple_kalman_setup.py'],
"cd common/kalman && python3 simple_kalman_setup.py build_ext --inplace")

View File

@@ -8,7 +8,7 @@ class KF1D:
def __init__(self, x0, A, C, K):
self.x = x0
self.A = A
self.C = C
self.C = np.atleast_2d(C)
self.K = K
self.A_K = self.A - np.dot(self.K, self.C)

View File

@@ -21,10 +21,10 @@ class TestSimpleKalman(unittest.TestCase):
K0_0 = 0.12287673
K1_0 = 0.29666309
self.kf_old = KF1D_old(x0=np.matrix([[x0_0], [x1_0]]),
A=np.matrix([[A0_0, A0_1], [A1_0, A1_1]]),
C=np.matrix([C0_0, C0_1]),
K=np.matrix([[K0_0], [K1_0]]))
self.kf_old = KF1D_old(x0=np.array([[x0_0], [x1_0]]),
A=np.array([[A0_0, A0_1], [A1_0, A1_1]]),
C=np.array([C0_0, C0_1]),
K=np.array([[K0_0], [K1_0]]))
self.kf = KF1D(x0=[[x0_0], [x1_0]],
A=[[A0_0, A0_1], [A1_0, A1_1]],
@@ -47,8 +47,8 @@ class TestSimpleKalman(unittest.TestCase):
x = self.kf.update(v_wheel)
# Compare the output x, verify that the error is less than 1e-4
self.assertAlmostEqual(x_old[0], x[0])
self.assertAlmostEqual(x_old[1], x[1])
np.testing.assert_almost_equal(x_old[0], x[0])
np.testing.assert_almost_equal(x_old[1], x[1])
def test_new_is_faster(self):
setup = """
@@ -69,10 +69,10 @@ C0_1 = 0.0
K0_0 = 0.12287673
K1_0 = 0.29666309
kf_old = KF1D_old(x0=np.matrix([[x0_0], [x1_0]]),
A=np.matrix([[A0_0, A0_1], [A1_0, A1_1]]),
C=np.matrix([C0_0, C0_1]),
K=np.matrix([[K0_0], [K1_0]]))
kf_old = KF1D_old(x0=np.array([[x0_0], [x1_0]]),
A=np.array([[A0_0, A0_1], [A1_0, A1_1]]),
C=np.array([C0_0, C0_1]),
K=np.array([[K0_0], [K1_0]]))
kf = KF1D(x0=[[x0_0], [x1_0]],
A=[[A0_0, A0_1], [A1_0, A1_1]],

View File

@@ -29,6 +29,7 @@ import tempfile
import threading
from enum import Enum
from common.basedir import PARAMS
from common.dp_conf import init_params_keys
def mkdirs_exists_ok(path):
@@ -80,6 +81,7 @@ keys = {
"IsUploadRawEnabled": [TxType.PERSISTENT],
"LastAthenaPingTime": [TxType.PERSISTENT],
"LastUpdateTime": [TxType.PERSISTENT],
"LastUpdateException": [TxType.PERSISTENT],
"LimitSetSpeed": [TxType.PERSISTENT],
"LimitSetSpeedNeural": [TxType.PERSISTENT],
"LiveParameters": [TxType.PERSISTENT],
@@ -108,8 +110,10 @@ keys = {
"Offroad_InvalidTime": [TxType.CLEAR_ON_MANAGER_START],
"Offroad_IsTakingSnapshot": [TxType.CLEAR_ON_MANAGER_START],
"Offroad_NeosUpdate": [TxType.CLEAR_ON_MANAGER_START],
"Offroad_UpdateFailed": [TxType.CLEAR_ON_MANAGER_START],
}
keys = init_params_keys(keys, [TxType.PERSISTENT])
def fsync_dir(path):
fd = os.open(path, os.O_RDONLY)
@@ -319,14 +323,15 @@ def write_db(params_path, key, value):
lock.acquire()
try:
tmp_path = tempfile.mktemp(prefix=".tmp", dir=params_path)
with open(tmp_path, "wb") as f:
tmp_path = tempfile.NamedTemporaryFile(mode="wb", prefix=".tmp", dir=params_path, delete=False)
with tmp_path as f:
f.write(value)
f.flush()
os.fsync(f.fileno())
os.chmod(tmp_path.name, 0o666)
path = "%s/d/%s" % (params_path, key)
os.rename(tmp_path, path)
os.rename(tmp_path.name, path)
fsync_dir(os.path.dirname(path))
finally:
os.umask(prev_umask)

View File

@@ -4,14 +4,17 @@ from common.basedir import BASEDIR
class Spinner():
def __init__(self):
try:
self.spinner_proc = subprocess.Popen(["./spinner"],
stdin=subprocess.PIPE,
cwd=os.path.join(BASEDIR, "selfdrive", "ui", "spinner"),
close_fds=True)
except OSError:
self.spinner_proc = None
def __init__(self, noop=False):
# spinner is currently only implemented for android
self.spinner_proc = None
if not noop:
try:
self.spinner_proc = subprocess.Popen(["./spinner"],
stdin=subprocess.PIPE,
cwd=os.path.join(BASEDIR, "selfdrive", "ui", "spinner"),
close_fds=True)
except OSError:
self.spinner_proc = None
def __enter__(self):
return self
@@ -40,23 +43,6 @@ class Spinner():
self.close()
class FakeSpinner(Spinner):
def __init__(self): # pylint: disable=super-init-not-called
pass
def __enter__(self):
return self
def update(self, _):
pass
def close(self):
pass
def __exit__(self, exc_type, exc_value, traceback):
pass
if __name__ == "__main__":
import time
with Spinner() as s:

View File

@@ -6,20 +6,22 @@ from common.basedir import BASEDIR
class TextWindow():
def __init__(self, s):
try:
self.text_proc = subprocess.Popen(["./text", s],
stdin=subprocess.PIPE,
cwd=os.path.join(BASEDIR, "selfdrive", "ui", "text"),
close_fds=True)
except OSError:
self.text_proc = None
def __init__(self, s, noop=False):
# text window is only implemented for android currently
self.text_proc = None
if not noop:
try:
self.text_proc = subprocess.Popen(["./text", s],
stdin=subprocess.PIPE,
cwd=os.path.join(BASEDIR, "selfdrive", "ui", "text"),
close_fds=True)
except OSError:
self.text_proc = None
def get_status(self):
if self.text_proc is not None:
self.text_proc.poll()
return self.text_proc.returncode
return None
def __enter__(self):
@@ -31,10 +33,12 @@ class TextWindow():
self.text_proc = None
def wait_for_exit(self):
while True:
if self.get_status() == 1:
return
time.sleep(0.1)
if self.text_proc is not None:
while True:
if self.get_status() == 1:
os.system('/data/openpilot/scripts/reset_update.sh')
return
time.sleep(0.1)
def __del__(self):
self.close()
@@ -43,29 +47,6 @@ class TextWindow():
self.close()
class FakeTextWindow(TextWindow):
def __init__(self, s): # pylint: disable=super-init-not-called
pass
def get_status(self):
return 1
def wait_for_exit(self):
return
def __enter__(self):
return self
def update(self, _):
pass
def close(self):
pass
def __exit__(self, exc_type, exc_value, traceback):
pass
if __name__ == "__main__":
text = """Traceback (most recent call last):
File "./controlsd.py", line 608, in <module>

View File

@@ -1,9 +1,8 @@
Import('env')
Import('env', 'cython_dependencies')
d = Dir('.')
env.Command(
['transformations.so'],
['transformations.pxd', 'transformations.pyx',
'coordinates.cc', 'orientation.cc', 'coordinates.hpp', 'orientation.hpp'],
'cd ' + d.path + ' && python3 setup.py build_ext --inplace')
env.Command(['transformations.so'],
cython_dependencies + ['transformations.pxd', 'transformations.pyx',
'coordinates.cc', 'orientation.cc', 'coordinates.hpp', 'orientation.hpp'],
'cd ' + d.path + ' && python3 setup.py build_ext --inplace')

View File

@@ -52,6 +52,13 @@ def get_view_frame_from_road_frame(roll, pitch, yaw, height):
return np.hstack((view_from_road, [[0], [height], [0]]))
# aka 'extrinsic_matrix'
def get_view_frame_from_calib_frame(roll, pitch, yaw, height):
device_from_calib= orient.rot_from_euler([roll, pitch, yaw])
view_from_calib = view_frame_from_device_frame.dot(device_from_calib)
return np.hstack((view_from_calib, [[0], [height], [0]]))
def vp_from_ke(m):
"""
Computes the vanishing point from the product of the intrinsic and extrinsic

View File

@@ -10,9 +10,9 @@
#define RAD2DEG(x) ((x) * 180.0 / M_PI)
double a = 6378137;
double b = 6356752.3142;
double esq = 6.69437999014 * 0.001;
double a = 6378137; // lgtm [cpp/short-global-name]
double b = 6356752.3142; // lgtm [cpp/short-global-name]
double esq = 6.69437999014 * 0.001; // lgtm [cpp/short-global-name]
double e1sq = 6.73949674228 * 0.001;

View File

@@ -2,6 +2,7 @@ import numpy as np
from common.transformations.camera import (FULL_FRAME_SIZE, eon_focal_length,
get_view_frame_from_road_frame,
get_view_frame_from_calib_frame,
vp_from_ke)
# segnet
@@ -73,6 +74,9 @@ bigmodel_frame_from_road_frame = np.dot(bigmodel_intrinsics,
medmodel_frame_from_road_frame = np.dot(medmodel_intrinsics,
get_view_frame_from_road_frame(0, 0, 0, model_height))
medmodel_frame_from_calib_frame = np.dot(medmodel_intrinsics,
get_view_frame_from_calib_frame(0, 0, 0, 0))
model_frame_from_bigmodel_frame = np.dot(model_intrinsics, np.linalg.inv(bigmodel_intrinsics))
medmodel_frame_from_bigmodel_frame = np.dot(medmodel_intrinsics, np.linalg.inv(bigmodel_intrinsics))

View File

@@ -46,7 +46,6 @@ quats_from_rotations = rot2quat
quat_from_rot = rot2quat
rotations_from_quats = quat2rot
rot_from_quat = quat2rot
rot_from_quat = quat2rot
euler_from_rot = rot2euler
euler_from_quat = quat2euler
rot_from_euler = euler2rot

View File

@@ -0,0 +1,56 @@
Make a python script translatable
--
1. add following codes to the top
```python
# This Python file uses the following encoding: utf-8
# -*- coding: utf-8 -*-
from common.i18n import events
_ = events()
```
2. wrap ```_()``` function around the string.
3. generate pot file (template file)
```bash
# e.g. xgettext -d base -o /data/openpilot/selfdrive/assets/locales/events.pot /data/openpilot/selfdrive/controls/lib/events.py
xgettext -d base -o <openpilot_path>/selfdrive/assets/locales/<template_file>.pot <file_to_translate>.py
```
4. add po file to languages
```bash
# e.g. cp /data/openpilot/selfdrive/assets/locales/events.pot /data/openpilot/selfdrive/assets/locales/zh-TW/LC_MESSAGES/events.po
cp <openpilot_path>/selfdrive/assets/locales/<template_file>.pot <openpilot_path>/selfdrive/assets/locales/<language>/LC_MESSAGES/<template_file>.po
```
5. translate po file with your favorite editor.
6. generate mo file.
```bash
# e.g. msgfmt -o /data/openpilot/selfdrive/assets/locales/zh-TW/LC_MESSAGES/events.mo /data/openpilot/selfdrive/assets/locales/zh-TW/LC_MESSAGES/events
msgfmt -o <openpilot_path>/selfdrive/assets/locales/<language>/LC_MESSAGES/<template_file>.mo <openpilot_path>/selfdrive/assets/locales/<language>/LC_MESSAGES/<template_file>
```
Update translations
---
1. add ```_()``` around the new strings
2. generate pot file again (template file)
```bash
# e.g. xgettext -d base -o /data/openpilot/selfdrive/assets/locales/events.pot /data/openpilot/selfdrive/controls/lib/events.py
xgettext -d base -o <openpilot_path>/selfdrive/assets/locales/<template_file>.pot <file_to_translate>.py
```
3. update already translated file (merge)
```bash
# e.g. msgmerge --update /data/openpilot/selfdrive/assets/locales/zh-TW/LC_MESSAGES/events.po /data/openpilot/selfdrive/assets/locales/events.pot
msgmerge --update <openpilot_path>/selfdrive/assets/locales/<language>/LC_MESSAGES/<file_to_translate>.po <openpilot_path>/selfdrive/assets/locales/<template_file>.pot
```
4. generate mo file again.
```bash
# e.g. msgfmt -o /data/openpilot/selfdrive/assets/locales/zh-TW/LC_MESSAGES/events.mo /data/openpilot/selfdrive/assets/locales/zh-TW/LC_MESSAGES/events
msgfmt -o <openpilot_path>/selfdrive/assets/locales/<language>/LC_MESSAGES/<template_file>.mo <openpilot_path>/selfdrive/assets/locales/<language>/LC_MESSAGES/<template_file>
```
Reference
---
https://simpleit.rocks/python/how-to-translate-a-python-project-with-gettext-the-easy-way/

21
dragonpilot/LICENSE.md Normal file
View File

@@ -0,0 +1,21 @@
The MIT License
Copyright (c) 2019-, Rick Lan, dragonpilot community, and a number of other of contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,92 @@
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,372 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
NOTE: this is the newer (L) version of the system font configuration,
supporting richer weight selection. Some apps will expect the older
version, so please keep system_fonts.xml and fallback_fonts.xml in sync
with any changes, even though framework will only read this file.
All fonts withohut names are added to the default list. Fonts are chosen
based on a match: full BCP-47 language tag including script, then just
language, and finally order (the first font containing the glyph).
Order of appearance is also the tiebreaker for weight matching. This is
the reason why the 900 weights of Roboto precede the 700 weights - we
prefer the former when an 800 weight is requested. Since bold spans
effectively add 300 to the weight, this ensures that 900 is the bold
paired with the 500 weight, ensuring adequate contrast.
-->
<familyset version="22">
<!-- first font is default -->
<family name="sans-serif">
<font weight="100" style="normal">Roboto-Thin.ttf</font>
<font weight="100" style="italic">Roboto-ThinItalic.ttf</font>
<font weight="300" style="normal">Roboto-Light.ttf</font>
<font weight="300" style="italic">Roboto-LightItalic.ttf</font>
<font weight="400" style="normal">Roboto-Regular.ttf</font>
<font weight="400" style="italic">Roboto-Italic.ttf</font>
<font weight="500" style="normal">Roboto-Medium.ttf</font>
<font weight="500" style="italic">Roboto-MediumItalic.ttf</font>
<font weight="900" style="normal">Roboto-Black.ttf</font>
<font weight="900" style="italic">Roboto-BlackItalic.ttf</font>
<font weight="700" style="normal">Roboto-Bold.ttf</font>
<font weight="700" style="italic">Roboto-BoldItalic.ttf</font>
</family>
<!-- Note that aliases must come after the fonts they reference. -->
<alias name="sans-serif-thin" to="sans-serif" weight="100" />
<alias name="sans-serif-light" to="sans-serif" weight="300" />
<alias name="sans-serif-medium" to="sans-serif" weight="500" />
<alias name="sans-serif-black" to="sans-serif" weight="900" />
<alias name="arial" to="sans-serif" />
<alias name="helvetica" to="sans-serif" />
<alias name="tahoma" to="sans-serif" />
<alias name="verdana" to="sans-serif" />
<family name="sans-serif-condensed">
<font weight="300" style="normal">RobotoCondensed-Light.ttf</font>
<font weight="300" style="italic">RobotoCondensed-LightItalic.ttf</font>
<font weight="400" style="normal">RobotoCondensed-Regular.ttf</font>
<font weight="400" style="italic">RobotoCondensed-Italic.ttf</font>
<font weight="700" style="normal">RobotoCondensed-Bold.ttf</font>
<font weight="700" style="italic">RobotoCondensed-BoldItalic.ttf</font>
</family>
<alias name="sans-serif-condensed-light" to="sans-serif-condensed" weight="300" />
<family name="serif">
<font weight="400" style="normal">NotoSerif-Regular.ttf</font>
<font weight="700" style="normal">NotoSerif-Bold.ttf</font>
<font weight="400" style="italic">NotoSerif-Italic.ttf</font>
<font weight="700" style="italic">NotoSerif-BoldItalic.ttf</font>
</family>
<alias name="times" to="serif" />
<alias name="times new roman" to="serif" />
<alias name="palatino" to="serif" />
<alias name="georgia" to="serif" />
<alias name="baskerville" to="serif" />
<alias name="goudy" to="serif" />
<alias name="fantasy" to="serif" />
<alias name="ITC Stone Serif" to="serif" />
<family name="monospace">
<font weight="400" style="normal">DroidSansMono.ttf</font>
</family>
<alias name="sans-serif-monospace" to="monospace" />
<alias name="monaco" to="monospace" />
<family name="serif-monospace">
<font weight="400" style="normal">CutiveMono.ttf</font>
</family>
<alias name="courier" to="serif-monospace" />
<alias name="courier new" to="serif-monospace" />
<family name="casual">
<font weight="400" style="normal">ComingSoon.ttf</font>
</family>
<family name="cursive">
<font weight="400" style="normal">DancingScript-Regular.ttf</font>
<font weight="700" style="normal">DancingScript-Bold.ttf</font>
</family>
<family name="sans-serif-smallcaps">
<font weight="400" style="normal">CarroisGothicSC-Regular.ttf</font>
</family>
<!-- fallback fonts -->
<family variant="elegant">
<font weight="400" style="normal">NotoNaskhArabic-Regular.ttf</font>
<font weight="700" style="normal">NotoNaskhArabic-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoNaskhArabicUI-Regular.ttf</font>
<font weight="700" style="normal">NotoNaskhArabicUI-Bold.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansEthiopic-Regular.ttf</font>
<font weight="700" style="normal">NotoSansEthiopic-Bold.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansHebrew-Regular.ttf</font>
<font weight="700" style="normal">NotoSansHebrew-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansThai-Regular.ttf</font>
<font weight="700" style="normal">NotoSansThai-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansThaiUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansThaiUI-Bold.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansArmenian-Regular.ttf</font>
<font weight="700" style="normal">NotoSansArmenian-Bold.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansGeorgian-Regular.ttf</font>
<font weight="700" style="normal">NotoSansGeorgian-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansDevanagari-Regular.ttf</font>
<font weight="700" style="normal">NotoSansDevanagari-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansDevanagariUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansDevanagariUI-Bold.ttf</font>
</family>
<!-- Gujarati should come after Devanagari -->
<family variant="elegant">
<font weight="400" style="normal">NotoSansGujarati-Regular.ttf</font>
<font weight="700" style="normal">NotoSansGujarati-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansGujaratiUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansGujaratiUI-Bold.ttf</font>
</family>
<!-- Gurmukhi should come after Devanagari -->
<family variant="elegant">
<font weight="400" style="normal">NotoSansGurmukhi-Regular.ttf</font>
<font weight="700" style="normal">NotoSansGurmukhi-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansGurmukhiUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansGurmukhiUI-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansTamil-Regular.ttf</font>
<font weight="700" style="normal">NotoSansTamil-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansTamilUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansTamilUI-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansMalayalam-Regular.ttf</font>
<font weight="700" style="normal">NotoSansMalayalam-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansMalayalamUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansMalayalamUI-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansBengali-Regular.ttf</font>
<font weight="700" style="normal">NotoSansBengali-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansBengaliUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansBengaliUI-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansTelugu-Regular.ttf</font>
<font weight="700" style="normal">NotoSansTelugu-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansTeluguUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansTeluguUI-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansKannada-Regular.ttf</font>
<font weight="700" style="normal">NotoSansKannada-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansKannadaUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansKannadaUI-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansOriya-Regular.ttf</font>
<font weight="700" style="normal">NotoSansOriya-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansOriyaUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansOriyaUI-Bold.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansSinhala-Regular.ttf</font>
<font weight="700" style="normal">NotoSansSinhala-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansKhmer-Regular.ttf</font>
<font weight="700" style="normal">NotoSansKhmer-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansKhmerUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansKhmerUI-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansLao-Regular.ttf</font>
<font weight="700" style="normal">NotoSansLao-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansLaoUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansLaoUI-Bold.ttf</font>
</family>
<family variant="elegant">
<font weight="400" style="normal">NotoSansMyanmar-Regular.ttf</font>
<font weight="700" style="normal">NotoSansMyanmar-Bold.ttf</font>
</family>
<family variant="compact">
<font weight="400" style="normal">NotoSansMyanmarUI-Regular.ttf</font>
<font weight="700" style="normal">NotoSansMyanmarUI-Bold.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansThaana-Regular.ttf</font>
<font weight="700" style="normal">NotoSansThaana-Bold.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansCham-Regular.ttf</font>
<font weight="700" style="normal">NotoSansCham-Bold.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansBalinese-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansBamum-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansBatak-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansBuginese-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansBuhid-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansCanadianAboriginal-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansCherokee-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansCoptic-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansGlagolitic-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansHanunoo-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansJavanese-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansKayahLi-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansLepcha-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansLimbu-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansLisu-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansMandaic-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansMeeteiMayek-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansNewTaiLue-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansNKo-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansOlChiki-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansRejang-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansSaurashtra-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansSundanese-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansSylotiNagri-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansSyriacEstrangela-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansTagbanwa-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansTaiTham-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansTaiViet-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansTibetan-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansTifinagh-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansVai-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansYi-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted.ttf</font>
</family>
<family lang="ja">
<font weight="400" style="normal">NotoSansJP-Regular.otf</font>
</family>
<family lang="ko">
<font weight="400" style="normal">NotoSansKR-Regular.otf</font>
</family>
<family>
<font weight="400" style="normal">NanumGothic.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoColorEmoji.ttf</font>
</family>
<family lang="zh-Hans">
<font weight="400" style="normal">NotoSansCJKtc-Regular.otf</font>
<font weight="500" style="normal">NotoSansCJKtc-Medium.otf</font>
<font weight="700" style="normal">NotoSansCJKtc-Bold.otf</font>
</family>
<family lang="zh-Hant">
<font weight="400" style="normal">NotoSansCJKtc-Regular.otf</font>
<font weight="500" style="normal">NotoSansCJKtc-Medium.otf</font>
<font weight="700" style="normal">NotoSansCJKtc-Bold.otf</font>
</family>
<family lang="ja">
<font weight="400" style="normal">MTLmr3m.ttf</font>
</family>
<!--
Tai Le and Mongolian are intentionally kept last, to make sure they don't override
the East Asian punctuation for Chinese.
-->
<family>
<font weight="400" style="normal">NotoSansTaiLe-Regular.ttf</font>
</family>
<family>
<font weight="400" style="normal">NotoSansMongolian-Regular.ttf</font>
</family>
</familyset>

View File

@@ -0,0 +1,62 @@
#!/usr/bin/bash
###############################################################################
# The MIT License
#
# Copyright (c) 2019-, Rick Lan, dragonpilot community, and a number of other of contributors.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
# Noto is a trademark of Google Inc. Noto fonts are open source.
# All Noto fonts are published under the SIL Open Font License,
# Version 1.1. Language data and some sample texts are from the Unicode CLDR project.
#
###############################################################################
# Android system locale, zh-TW = Traditional Chinese, zh-CN = Simplified Chinese
#lang=en
update_font=0
remove_old_font=0
# check regular font
if [ ! -f "/system/fonts/NotoSansCJKtc-Regular.otf" ]; then
update_font=1
fi
if [ $update_font -eq "1" ] || [ $remove_old_font -eq "1" ]; then
# sleep 3 secs in case, make sure the /system is re-mountable
sleep 3
mount -o remount,rw /system
if [ $update_font -eq "1" ]; then
# install font
cp -rf /data/openpilot/dragonpilot/cjk-fonts/NotoSansCJKtc-* /system/fonts/
# install font mapping
cp -rf /data/openpilot/dragonpilot/cjk-fonts/fonts.xml /system/etc/fonts.xml
# change permissions
chmod 644 /system/etc/fonts.xml
chmod 644 /system/fonts/NotoSansCJKtc-*
fi
mount -o remount,r /system
# change system locale
fi
#setprop persist.sys.locale $lang
#setprop persist.sys.local $lang

View File

@@ -1,7 +1,7 @@
{
"ota_url": "https://commadist.azureedge.net/neosupdate/ota-signed-efdf7de63b1aef63d68301e6175930991bf9a5927d16ec6fcc69287e2ee7ca4a.zip",
"ota_hash": "efdf7de63b1aef63d68301e6175930991bf9a5927d16ec6fcc69287e2ee7ca4a",
"recovery_url": "https://commadist.azureedge.net/neosupdate/recovery-97c27e6ed04ed6bb0608b845a2d4100912093f9380c3f2ba6b56bccd608e5f6e.img",
"recovery_len": 15861036,
"recovery_hash": "97c27e6ed04ed6bb0608b845a2d4100912093f9380c3f2ba6b56bccd608e5f6e"
"ota_url": "http://dpp.cool/neosupdate/ota-signed-16e6e346e0e29ba9953d0ebd7185a7955b8e2261790f0e68aee74ced3028dfb8.zip",
"ota_hash": "16e6e346e0e29ba9953d0ebd7185a7955b8e2261790f0e68aee74ced3028dfb8",
"recovery_url": "http://dpp.cool/neosupdate/recovery-4772f9348e04b560b9df87d6dea6c740fa8d62ea41a8db3842eec216f04e3110.img",
"recovery_len": 15922476,
"recovery_hash": "4772f9348e04b560b9df87d6dea6c740fa8d62ea41a8db3842eec216f04e3110"
}

Binary file not shown.

View File

@@ -10,6 +10,7 @@
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
#include <mutex>
#include <thread>
@@ -33,10 +34,10 @@
#define USER_AGENT "NEOSUpdater-0.2"
#define MANIFEST_URL_EON_STAGING "https://github.com/commaai/eon-neos/raw/master/update.staging.json"
#define MANIFEST_URL_EON_LOCAL "http://192.168.5.1:8000/neosupdate/update.local.json"
#define MANIFEST_URL_EON "https://github.com/commaai/eon-neos/raw/master/update.json"
const char *manifest_url = MANIFEST_URL_EON;
#define MANIFEST_URL_NEOS_STAGING "https://github.com/commaai/eon-neos/raw/master/update.staging.json"
#define MANIFEST_URL_NEOS_LOCAL "http://192.168.5.1:8000/neosupdate/update.local.json"
#define MANIFEST_URL_NEOS "https://github.com/commaai/eon-neos/raw/master/update.json"
const char *manifest_url = MANIFEST_URL_NEOS;
#define RECOVERY_DEV "/dev/block/bootdevice/by-name/recovery"
#define RECOVERY_COMMAND "/cache/recovery/command"
@@ -96,7 +97,7 @@ std::string download_string(CURL *curl, std::string url) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 0);
curl_easy_setopt(curl, CURLOPT_USERAGENT, USER_AGENT);
curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 0);
@@ -149,6 +150,32 @@ static void start_settings_activity(const char* name) {
system(launch_cmd);
}
bool is_settings_active() {
FILE *fp;
char sys_output[4096];
fp = popen("/bin/dumpsys window windows", "r");
if (fp == NULL) {
return false;
}
bool active = false;
while (fgets(sys_output, sizeof(sys_output), fp) != NULL) {
if (strstr(sys_output, "mCurrentFocus=null") != NULL) {
break;
}
if (strstr(sys_output, "mCurrentFocus=Window") != NULL) {
active = true;
break;
}
}
pclose(fp);
return active;
}
struct Updater {
bool do_exit = false;
@@ -166,7 +193,6 @@ struct Updater {
std::mutex lock;
// i hate state machines give me coroutines already
enum UpdateState {
CONFIRMATION,
LOW_BATTERY,
@@ -190,9 +216,15 @@ struct Updater {
int b_x, b_w, b_y, b_h;
int balt_x;
// download stage writes these for the installation stage
int recovery_len;
std::string recovery_hash;
std::string recovery_fn;
std::string ota_fn;
CURL *curl = NULL;
Updater() {
void ui_init() {
touch_init(&touch);
fb = framebuffer_init("updater", 0x00001000, false,
@@ -218,7 +250,6 @@ struct Updater {
b_h = 220;
state = CONFIRMATION;
}
int download_file_xferinfo(curl_off_t dltotal, curl_off_t dlno,
@@ -251,7 +282,7 @@ struct Updater {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 0);
curl_easy_setopt(curl, CURLOPT_USERAGENT, USER_AGENT);
curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
curl_easy_setopt(curl, CURLOPT_RESUME_FROM, resume_from);
@@ -319,32 +350,113 @@ struct Updater {
state = RUNNING;
}
std::string stage_download(std::string url, std::string hash, std::string name) {
std::string download(std::string url, std::string hash, std::string name) {
std::string out_fn = UPDATE_DIR "/" + util::base_name(url);
set_progress("Downloading " + name + "...");
bool r = download_file(url, out_fn);
if (!r) {
set_error("failed to download " + name);
return "";
// start or resume downloading if hash doesn't match
std::string fn_hash = sha256_file(out_fn);
if (hash.compare(fn_hash) != 0) {
set_progress("Downloading " + name + "...");
bool r = download_file(url, out_fn);
if (!r) {
set_error("failed to download " + name);
unlink(out_fn.c_str());
return "";
}
fn_hash = sha256_file(out_fn);
}
set_progress("Verifying " + name + "...");
std::string fn_hash = sha256_file(out_fn);
printf("got %s hash: %s\n", name.c_str(), hash.c_str());
if (fn_hash != hash) {
set_error(name + " was corrupt");
unlink(out_fn.c_str());
return "";
}
return out_fn;
}
void run_stages() {
bool download_stage() {
curl = curl_easy_init();
assert(curl);
// ** quick checks before download **
if (!check_space()) {
set_error("2GB of free space required to update");
return false;
}
mkdir(UPDATE_DIR, 0777);
set_progress("Finding latest version...");
std::string manifest_s = download_string(curl, manifest_url);
printf("manifest: %s\n", manifest_s.c_str());
std::string err;
auto manifest = json11::Json::parse(manifest_s, err);
if (manifest.is_null() || !err.empty()) {
set_error("failed to load update manifest");
return false;
}
std::string ota_url = manifest["ota_url"].string_value();
std::string ota_hash = manifest["ota_hash"].string_value();
std::string recovery_url = manifest["recovery_url"].string_value();
recovery_hash = manifest["recovery_hash"].string_value();
recovery_len = manifest["recovery_len"].int_value();
// std::string installer_url = manifest["installer_url"].string_value();
// std::string installer_hash = manifest["installer_hash"].string_value();
if (ota_url.empty() || ota_hash.empty()) {
set_error("invalid update manifest");
return false;
}
// std::string installer_fn = download(installer_url, installer_hash, "installer");
// if (installer_fn.empty()) {
// //error'd
// return;
// }
// ** handle recovery download **
if (recovery_url.empty() || recovery_hash.empty() || recovery_len == 0) {
set_progress("Skipping recovery flash...");
} else {
// only download the recovery if it differs from what's flashed
set_progress("Checking recovery...");
std::string existing_recovery_hash = sha256_file(RECOVERY_DEV, recovery_len);
printf("existing recovery hash: %s\n", existing_recovery_hash.c_str());
if (existing_recovery_hash != recovery_hash) {
recovery_fn = download(recovery_url, recovery_hash, "recovery");
if (recovery_fn.empty()) {
// error'd
return false;
}
}
}
// ** handle ota download **
ota_fn = download(ota_url, ota_hash, "update");
if (ota_fn.empty()) {
//error'd
return false;
}
// download sucessful
return true;
}
// thread that handles downloading and installing the update
void run_stages() {
printf("run_stages start\n");
// ** download update **
if (!check_battery()) {
set_battery_low();
int battery_cap = battery_capacity();
@@ -356,77 +468,12 @@ struct Updater {
set_running();
}
if (!check_space()) {
set_error("2GB of free space required to update");
bool sucess = download_stage();
if (!sucess) {
return;
}
mkdir(UPDATE_DIR, 0777);
const int EON = (access("/EON", F_OK) != -1);
set_progress("Finding latest version...");
std::string manifest_s;
if (EON) {
manifest_s = download_string(curl, manifest_url);
} else {
// don't update NEO
exit(0);
}
printf("manifest: %s\n", manifest_s.c_str());
std::string err;
auto manifest = json11::Json::parse(manifest_s, err);
if (manifest.is_null() || !err.empty()) {
set_error("failed to load update manifest");
return;
}
std::string ota_url = manifest["ota_url"].string_value();
std::string ota_hash = manifest["ota_hash"].string_value();
std::string recovery_url = manifest["recovery_url"].string_value();
std::string recovery_hash = manifest["recovery_hash"].string_value();
int recovery_len = manifest["recovery_len"].int_value();
// std::string installer_url = manifest["installer_url"].string_value();
// std::string installer_hash = manifest["installer_hash"].string_value();
if (ota_url.empty() || ota_hash.empty()) {
set_error("invalid update manifest");
return;
}
// std::string installer_fn = stage_download(installer_url, installer_hash, "installer");
// if (installer_fn.empty()) {
// //error'd
// return;
// }
std::string recovery_fn;
if (recovery_url.empty() || recovery_hash.empty() || recovery_len == 0) {
set_progress("Skipping recovery flash...");
} else {
// only download the recovery if it differs from what's flashed
set_progress("Checking recovery...");
std::string existing_recovery_hash = sha256_file(RECOVERY_DEV, recovery_len);
printf("existing recovery hash: %s\n", existing_recovery_hash.c_str());
if (existing_recovery_hash != recovery_hash) {
recovery_fn = stage_download(recovery_url, recovery_hash, "recovery");
if (recovery_fn.empty()) {
// error'd
return;
}
}
}
std::string ota_fn = stage_download(ota_url, ota_hash, "update");
if (ota_fn.empty()) {
//error'd
return;
}
// ** install update **
if (!check_battery()) {
set_battery_low();
@@ -601,7 +648,7 @@ struct Updater {
int powerprompt_y = 312;
nvgFontFace(vg, "opensans_regular");
nvgFontSize(vg, 64.0f);
nvgText(vg, fb_w/2, 740, "Ensure EON is connected to power.", NULL);
nvgText(vg, fb_w/2, 740, "Ensure your device remains connected to a power source.", NULL);
NVGpaint paint = nvgBoxGradient(
vg, progress_x + 1, progress_y + 1,
@@ -657,9 +704,7 @@ struct Updater {
void ui_update() {
std::lock_guard<std::mutex> guard(lock);
switch (state) {
case ERROR:
case CONFIRMATION: {
if (state == ERROR || state == CONFIRMATION) {
int touch_x = -1, touch_y = -1;
int res = touch_poll(&touch, &touch_x, &touch_y, 0);
if (res == 1 && !is_settings_active()) {
@@ -678,13 +723,11 @@ struct Updater {
}
}
}
default:
break;
}
}
void go() {
ui_init();
while (!do_exit) {
ui_update();
@@ -718,51 +761,37 @@ struct Updater {
update_thread_handle.join();
}
// reboot
system("service call power 16 i32 0 i32 0 i32 1");
}
bool is_settings_active() {
FILE *fp;
char sys_output[4096];
fp = popen("/bin/dumpsys window windows", "r");
if (fp == NULL) {
return false;
}
bool active = false;
while (fgets(sys_output, sizeof(sys_output), fp) != NULL) {
if (strstr(sys_output, "mCurrentFocus=null") != NULL) {
break;
}
if (strstr(sys_output, "mCurrentFocus=Window") != NULL) {
active = true;
break;
}
}
pclose(fp);
return active;
}
};
}
int main(int argc, char *argv[]) {
bool background_cache = false;
if (argc > 1) {
if (strcmp(argv[1], "local") == 0) {
manifest_url = MANIFEST_URL_EON_LOCAL;
manifest_url = MANIFEST_URL_NEOS_LOCAL;
} else if (strcmp(argv[1], "staging") == 0) {
manifest_url = MANIFEST_URL_EON_STAGING;
manifest_url = MANIFEST_URL_NEOS_STAGING;
} else if (strcmp(argv[1], "bgcache") == 0) {
manifest_url = argv[2];
background_cache = true;
} else {
manifest_url = argv[1];
}
}
printf("updating from %s\n", manifest_url);
Updater updater;
updater.go();
return 0;
int err = 0;
if (background_cache) {
err = !updater.download_stage();
} else {
updater.go();
}
return err;
}

4
launch.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/bash
export PASSIVE="0"
exec ./launch_chffrplus.sh

View File

@@ -1,25 +1,20 @@
#!/usr/bin/bash
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
export VECLIB_MAXIMUM_THREADS=1
if [ -z "$BASEDIR" ]; then
BASEDIR="/data/openpilot"
fi
if [ -z "$PASSIVE" ]; then
export PASSIVE="1"
fi
source "$BASEDIR/launch_env.sh"
STAGING_ROOT="/data/safe_staging"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
function launch {
# Wifi scan
wpa_cli IFNAME=wlan0 SCAN
# Remove orphaned git lock if it exists on boot
[ -f "$DIR/.git/index.lock" ] && rm -f $DIR/.git/index.lock
# Check to see if there's a valid overlay-based update available. Conditions
# are as follows:
#
@@ -30,10 +25,10 @@ function launch {
# that completed successfully and synced to disk.
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
# 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"
@@ -49,13 +44,14 @@ function launch {
git submodule foreach --recursive git reset --hard
echo "Restarting launch script ${LAUNCHER_LOCATION}"
unset REQUIRED_NEOS_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
fi
# Android and other system processes are not permitted to run on CPU 3
@@ -75,26 +71,21 @@ function launch {
[ -d "/proc/irq/733" ] && echo 3 > /proc/irq/733/smp_affinity_list # USB for LeEco
[ -d "/proc/irq/736" ] && echo 3 > /proc/irq/736/smp_affinity_list # USB for OP3T
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
# Remove old NEOS update file
# TODO: move this code to the updater
if [ -d /data/neoupdate ]; then
rm -rf /data/neoupdate
fi
# Check for NEOS update
if [ $(< /VERSION) != "14" ]; then
if [ $(< /VERSION) != "$REQUIRED_NEOS_VERSION" ]; then
if [ -f "$DIR/scripts/continue.sh" ]; then
cp "$DIR/scripts/continue.sh" "/data/data/com.termux/files/continue.sh"
fi
if [ ! -f "$BASEDIR/prebuilt" ]; then
echo "Clearing build products and resetting scons state prior to NEOS update"
cd $BASEDIR && scons --clean
rm -rf /tmp/scons_cache
rm -r $BASEDIR/.sconsign.dblite
# Clean old build products, but preserve the scons cache
cd $DIR
scons --clean
git clean -xdf
git submodule foreach --recursive git clean -xdf
fi
"$DIR/installer/updater/updater" "file://$DIR/installer/updater/update.json"
else
if [[ $(uname -v) == "#1 SMP PREEMPT Wed Jun 10 12:40:53 PDT 2020" ]]; then
@@ -119,6 +110,10 @@ function launch {
ln -sfn $(pwd) /data/pythonpath
export PYTHONPATH="$PWD"
if [ -f "/sdcard/dp_patcher.py" ]; then
/data/data/com.termux/files/usr/bin/python /sdcard/dp_patcher.py
fi
# start manager
cd selfdrive
./manager.py

17
launch_env.sh Executable file
View File

@@ -0,0 +1,17 @@
#!/usr/bin/bash
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
export VECLIB_MAXIMUM_THREADS=1
if [ -z "$REQUIRED_NEOS_VERSION" ]; then
export REQUIRED_NEOS_VERSION="14"
fi
if [ -z "$PASSIVE" ]; then
export PASSIVE="1"
fi
export STAGING_ROOT="/data/safe_staging"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/bash
/usr/bin/sh /data/openpilot/dragonpilot/cjk-fonts/installer.sh &
export PASSIVE="0"
exec ./launch_chffrplus.sh

Binary file not shown.

1
opendbc/.gitignore vendored
View File

@@ -14,4 +14,3 @@ can/packer_pyx.cpp
can/parser_pyx.cpp
can/packer_pyx.html
can/parser_pyx.html
can/packer_impl.cpp

View File

@@ -1,4 +1,4 @@
Import('env', 'cereal')
Import('env', 'cereal', 'cython_dependencies')
import os
from opendbc.can.process_dbc import process
@@ -17,7 +17,6 @@ for x in sorted(os.listdir('../')):
libdbc = env.SharedLibrary('libdbc', ["dbc.cc", "parser.cc", "packer.cc", "common.cc"]+dbcs, LIBS=["capnp", "kj"])
# Build packer and parser
env.Command(['packer_pyx.so', 'parser_pyx.so'],
[libdbc, cereal, 'common_pyx_setup.py', 'packer_pyx.pyx', 'parser_pyx.pyx', 'common.pxd'],
"cd opendbc/can && python3 common_pyx_setup.py build_ext --inplace")
env.Command(['packer_pyx.so', 'packer_pyx.cpp', 'parser_pyx.so', 'parser_pyx.cpp'],
cython_dependencies + [libdbc, cereal, 'common_pyx_setup.py', 'common.pxd', 'packer_pyx.pyx', 'parser_pyx.pyx', 'packer.cc', 'parser.cc'],
"cd opendbc/can && python3 common_pyx_setup.py build_ext --inplace")

View File

@@ -63,9 +63,9 @@ setup(name='CAN parser',
include_dirs=include_dirs,
extra_link_args=extra_link_args,
),
nthreads=4,
annotate=ANNOTATE
),
nthreads=4,
)
if platform.system() == "Darwin":
@@ -85,9 +85,9 @@ setup(name='CAN packer',
include_dirs=include_dirs,
extra_link_args=extra_link_args,
),
nthreads=4,
annotate=ANNOTATE
),
nthreads=4,
)
if platform.system() == "Darwin":

View File

@@ -3,20 +3,17 @@
from libcpp.string cimport string
from libcpp.vector cimport vector
from libcpp cimport bool
from libcpp.unordered_set cimport unordered_set
from libc.stdint cimport uint32_t, uint64_t, uint16_t
from libcpp.map cimport map
from collections import defaultdict
from libcpp cimport bool
from common cimport CANParser as cpp_CANParser
from common cimport SignalParseOptions, MessageParseOptions, dbc_lookup, SignalValue, DBC
from libcpp cimport bool
import os
import numbers
from collections import defaultdict
cdef int CAN_INVALID_CNT = 5
@@ -30,7 +27,7 @@ cdef class CANParser:
vector[SignalValue] can_values
bool test_mode_enabled
cdef public:
cdef readonly:
string dbc_name
dict vl
dict ts

View File

@@ -0,0 +1,13 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT"
CM_ "honda_crv_ex_2017_body.dbc starts here"
BO_ 318291879 BSM_STATUS_RIGHT: 8 XXX
SG_ BSM_ALERT : 4|1@0+ (1,0) [0|1] "" XXX
SG_ BSM_MODE : 6|2@0+ (1,0) [0|3] "" XXX
BO_ 318291615 BSM_STATUS_LEFT: 8 XXX
SG_ BSM_ALERT : 4|1@0+ (1,0) [0|1] "" XXX
SG_ BSM_MODE : 6|2@0+ (1,0) [0|3] "" XXX
VAL_ 318291879 BSM_MODE 2 "blind_spot" 1 "cross_traffic" 0 "off";
VAL_ 318291615 BSM_MODE 2 "blind_spot" 1 "cross_traffic" 0 "off";

View File

@@ -191,8 +191,12 @@ BO_ 916 TCS13: 8 ESC
SG_ BrakeLight : 11|1@1+ (1.0,0.0) [0.0|1.0] "" CLU,EMS,SCC
SG_ DCEnable : 12|1@1+ (1.0,0.0) [0.0|1.0] "" EMS,SCC
SG_ AliveCounterTCS : 13|3@1+ (1.0,0.0) [0.0|7.0] "" EMS,SCC
SG_ ACCReqLim : 22|2@1+ (1.0,0.0) [0.0|3.0] "" EMS,SCC
SG_ TQI_ACC : 24|8@1+ (0.390625,0.0) [0.0|99.609375] "%" EMS
SG_ Pre_TCS_CTL : 16|1@1+ (1.0,0.0) [0.0|1.0] "" Vector__XXX
SG_ EBA_ACK : 17|1@1+ (1.0,0.0) [0.0|1.0] "" Vector__XXX
SG_ FCA_ACK : 18|1@1+ (1.0,0.0) [0.0|1.0] "" Vector__XXX
SG_ DF_BF_STAT : 19|2@1+ (1.0,0.0) [0.0|3.0] "" BCW
SG_ SCCReqLim : 21|2@1+ (1.0,0.0) [0.0|3.0] "" SCC
SG_ TQI_SCC : 23|9@1+ (0.390625,0.0) [0.0|199.609375] "%" Vector__XXX
SG_ ACCEL_REF_ACC : 32|11@1+ (0.01,-10.23) [-10.23|10.24] "m/s^2" EMS,SCC
SG_ ACCEnable : 43|2@1+ (1.0,0.0) [0.0|3.0] "" EMS,SCC
SG_ DriverOverride : 45|2@1+ (1.0,0.0) [0.0|3.0] "" EMS,SCC
@@ -448,6 +452,7 @@ BO_ 897 MDPS11: 8 MDPS
SG_ CF_Mdps_LKAS_FUNC : 58|1@1+ (1.0,0.0) [0.0|1.0] "flag" LDWS_LKAS
SG_ CF_Mdps_CurrMode : 59|2@1+ (1.0,0.0) [0.0|3.0] "" LDWS_LKAS
SG_ CF_Mdps_Type : 61|2@1+ (1.0,0.0) [0.0|2.0] "" LDWS_LKAS,SPAS
SG_ CF_MDPS_VSM_FUNC : 56|1@0+ (1.0,0.0) [0.0|1.0] "" XXX
BO_ 896 DI_BOX13: 8 DI_BOX
SG_ CF_DiBox_HPreInjVConfStat : 0|8@1+ (1.0,0.0) [0.0|255.0] "" EMS
@@ -961,7 +966,7 @@ BO_ 64 DATC14: 8 DATC
SG_ DATC_ADSDisp : 28|2@1+ (1.0,0.0) [0.0|3.0] "" CLU
BO_ 832 LKAS11: 8 LDWS_LKAS
SG_ CF_Lkas_Bca_R : 0|2@1+ (1.0,0.0) [0.0|3.0] "" CLU,IBOX,PSB
SG_ CF_Lkas_LdwsActivemode : 0|2@1+ (1,0) [0|3] "" CLU,IBOX,PSB
SG_ CF_Lkas_LdwsSysState : 2|4@1+ (1.0,0.0) [0.0|15.0] "" CLU,IBOX,PSB
SG_ CF_Lkas_SysWarning : 6|4@1+ (1.0,0.0) [0.0|15.0] "" BCM,CLU
SG_ CF_Lkas_LdwsLHWarning : 10|2@1+ (1.0,0.0) [0.0|3.0] "" BCM,CLU,PSB
@@ -978,11 +983,11 @@ BO_ 832 LKAS11: 8 LDWS_LKAS
SG_ CF_Lkas_FcwSysState : 40|3@1+ (1.0,0.0) [0.0|7.0] "" CLU
SG_ CF_Lkas_FcwCollisionWarning : 43|2@1+ (1.0,0.0) [0.0|3.0] "" CLU
SG_ CF_Lkas_FusionState : 45|2@1+ (1.0,0.0) [0.0|3.0] "" SCC
SG_ CF_Lkas_Unknown1 : 47|1@1+ (1.0,0.0) [0.0|1.0] "" XXX
SG_ CF_Lkas_Chksum : 48|8@1+ (1.0,0.0) [0.0|255.0] "" MDPS
SG_ CF_Lkas_FcwOpt_USM : 56|3@1+ (1.0,0.0) [0.0|7.0] "" CLU
SG_ CF_Lkas_LdwsOpt_USM : 59|3@1+ (1.0,0.0) [0.0|7.0] "" CLU,MDPS
SG_ CF_Lkas_Unknown1 : 47|1@1+ (1,0) [0|3] "" XXX
SG_ CF_Lkas_Unknown2 : 63|2@0+ (1,0) [0|3] "" XXX
SG_ CF_Lkas_Unknown2 : 62|2@1+ (1.0,0.0) [0.0|1.0] "" XXX
BO_ 1342 LKAS12: 6 LDWS_LKAS
SG_ CF_Lkas_TsrSlifOpt : 10|2@1+ (1.0,0.0) [0.0|3.0] "" CLU
@@ -1037,6 +1042,7 @@ BO_ 1322 CLU15: 8 CLU
SG_ CF_Clu_HudFontSizeSet : 31|2@1+ (1.0,0.0) [0.0|3.0] "" HUD
SG_ CF_Clu_LanguageInfo : 33|5@1+ (1.0,0.0) [0.0|31.0] "" BCM,PGS
SG_ CF_Clu_ClusterSound : 38|1@1- (1.0,0.0) [0.0|0.0] "" BCM,CGW,FATC
SG_ CF_Clu_VehicleSpeed2 : 48|8@1+ (1,0) [0|255] "" XXX
BO_ 1066 _4WD13: 6 _4WD
SG_ _4WD_CURRENT : 0|8@1+ (0.390625,0.0) [-50.0|50.0] "A" TCU
@@ -1250,14 +1256,6 @@ BO_ 790 EMS11: 8 EMS
SG_ VS : 48|8@1+ (1.0,0.0) [0.0|254.0] "km/h" _4WD,AAF,ACU,AHLS,BCM,CLU,DATC,ECS,EPB,IBOX,LCA,LDWS_LKAS,LVR,MDPS,ODS,SCC,SMK,SPAS,TCU,TPMS
SG_ RATIO_TQI_BAS_MAX_STND : 56|8@1+ (0.0078,0.0) [0.0|2.0] "" _4WD,IBOX,TCU
BO_ 881 E_EMS11: 8 XXX
SG_ Cruise_Limit_Status : 13|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Limit_Target : 23|8@1+ (1,0) [0|15] "" XXX
SG_ Gear_Change : 12|1@0+ (1,0) [0|31] "" XXX
SG_ IG_Reactive_Stat : 8|3@1+ (1,0) [0|3] "" XXX
SG_ Brake_Pedal_Pos : 0|8@1+ (1,0) [0|127] "" XXX
SG_ Accel_Pedal_Pos : 31|8@1+ (1,0) [0|7] "" XXX
BO_ 1301 CLU14: 8 CLU
SG_ CF_Clu_ADrUNValueSet : 0|3@1+ (1.0,0.0) [0.0|7.0] "" BCM
SG_ CF_Clu_ADrLNValueSet : 3|3@1+ (1.0,0.0) [0.0|7.0] "" BCM
@@ -1380,6 +1378,7 @@ BO_ 1290 SCC13: 8 SCC
SG_ SCCDrvModeRValue : 0|3@1+ (1,0) [0|7] "" CLU
SG_ SCC_Equip : 3|1@1+ (1,0) [0|1] "" ESC
SG_ AebDrvSetStatus : 4|3@1+ (1,0) [0|7] "" CLU,ESC
SG_ Lead_Veh_Dep_Alert_USM : 13|2@0+ (1,0) [0|3] "" XXX
BO_ 1287 TCS15: 4 ESC
SG_ ABS_W_LAMP : 0|1@1+ (1.0,0.0) [0.0|1.0] "" _4WD,CLU,CUBIS,IBOX
@@ -1451,6 +1450,18 @@ BO_ 909 FCA11: 8 FCA
SG_ Supplemental_Counter : 35|4@1+ (1,0) [0|15] "" XXX
SG_ PAINT1_Status : 16|2@1+ (1,0) [0|1] "" XXX
BO_ 1156 HDA11_MFC: 8 XXX
SG_ Counter : 5|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 1|2@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 7|2@0+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_3 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 16|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_5 : 18|14@1+ (1,0) [0|63] "" XXX
SG_ NEW_SIGNAL_6 : 33|2@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_7 : 34|14@1+ (1,0) [0|16383] "" XXX
SG_ NEW_SIGNAL_8 : 49|2@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_9 : 50|14@1- (1,-4095) [0|16383] "" XXX
BO_ 1155 FCA12: 8 FCA
SG_ FCA_USM : 0|3@1+ (1,0) [0|7] "" CGW,CLU,ESC
SG_ FCA_DrvSetState : 3|3@1+ (1,0) [0|7] "" CGW
@@ -1459,22 +1470,166 @@ BO_ 1186 FRT_RADAR11: 2 FCA
SG_ CF_FCA_Equip_Front_Radar : 0|3@1+ (1,0) [0|7] "" LDWS_LKAS,LDW_LKA,ESC
BO_ 905 SCC14: 8 SCC
SG_ ComfortBandLower : 6|6@1+ (1,0) [0|0] "" Vector__XXX
SG_ ComfortBandUpper : 0|6@1+ (1,0) [0|0] "" Vector__XXX
SG_ JerkLowerLimit : 19|7@1+ (1,0) [0|0] "" Vector__XXX
SG_ JerkUpperLimit : 12|7@1+ (0.1,0) [0|0] "" Vector__XXX
SG_ ComfortBandUpper : 0|6@1+ (0.0986,-4.14) [0|1.26] "m/s^2" ESC
SG_ ComfortBandLower : 6|6@1+ (0.0986,-4.14) [0|1.26] "m/s^2" ESC
SG_ JerkUpperLimit : 12|7@1+ (1,0) [0|12.7] "m/s^3" ESC
SG_ JerkLowerLimit : 19|7@1+ (0.1,0) [0|12.7] "m/s^3" ESC
SG_ ACCMode : 32|3@1+ (1,0) [0|7] "" CLU,HUD,LDWS_LKAS,ESC
SG_ ObjGap : 56|8@1+ (1,0) [0|255] "" CLU,HUD,ESC
BO_ 882 ELECT_GEAR: 8 XXX
SG_ Elect_Gear_Shifter : 16|3@1+ (1,0) [0|7] "" CLU
BO_ 1157 LFAHDA_MFC: 4 XXX
SG_ LFA_USM : 28|2@1+ (1,0) [0|3] "" XXX
SG_ LFA_SysWarning : 16|2@1+ (1,0) [0|3] "" XXX
SG_ ACTIVE2 : 4|2@0+ (1,0) [0|3] "" XXX
SG_ HDA_USM : 0|2@1+ (1,0) [0|3] "" XXX
SG_ ACTIVE2 : 4|2@0+ (1,0) [0|3] "" XXX
SG_ LFA_SysWarning : 16|2@1+ (1,0) [0|3] "" XXX
SG_ ACTIVE : 25|1@1+ (1,0) [0|3] "" XXX
SG_ LFA_USM : 28|2@1+ (1,0) [0|3] "" XXX
BO_ 913 BCM_PO_11: 8 Vector__XXX
SG_ BCM_Door_Dri_Status : 5|1@0+ (1,0) [0|1] "" PT_ESC_ABS
SG_ BCM_Shift_R_MT_SW_Status : 39|2@0+ (1,0) [0|3] "" PT_ESC_ABS
BO_ 1426 LABEL11: 8 XXX
SG_ CC_React : 34|1@1+ (1,0) [0|1] "" XXX
BO_ 910 WHL_SPD12_FS: 5 iBAU
SG_ CRC : 0|8@1+ (1,0) [0|0] "" Vector__XXX
SG_ WHL_SPD12_AliveCounter : 8|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ WHL_SPD_FL : 12|14@1+ (0.03125,0) [0|511.96875] "km/h" Vector__XXX
SG_ WHL_SPD_FR : 26|14@1+ (0.03125,0) [0|511.96875] "km/h" Vector__XXX
BO_ 911 WHL_SPD13_FS: 5 iBAU
SG_ CRC : 0|8@1+ (1,0) [0|0] "" Vector__XXX
SG_ WHL_SPD13_AliveCounter : 8|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ WHL_SPD_RL : 12|14@1+ (0.03125,0) [0|511.96875] "km/h" Vector__XXX
SG_ WHL_SPD_RR : 26|14@1+ (0.03125,0) [0|511.96875] "km/h" Vector__XXX
BO_ 865 ADAS_PRK_11: 8 ADAS_PRK
SG_ CF_PCA_BrkReq : 24|1@1+ (1,0) [0|0] "" Vector__XXX
SG_ CF_PCA_DclTrgtVal : 28|4@1+ (0.04,0) [0|0] "g" Vector__XXX
SG_ PCA_ALIVE_CNT : 40|4@1+ (1,0) [0|0] "" Vector__XXX
SG_ PCA_CHECK_SUM : 48|8@1+ (1,0) [0|0] "" Vector__XXX
BO_ 882 ELECT_GEAR: 8 XXX
SG_ Elect_Gear_Shifter : 16|4@1+ (1,0) [0|7] "" CLU
BO_ 881 E_EMS11: 8 XXX
SG_ Brake_Pedal_Pos : 0|8@1+ (1,0) [0|127] "" XXX
SG_ IG_Reactive_Stat : 8|3@1+ (1,0) [0|3] "" XXX
SG_ Gear_Change : 12|1@0+ (1,0) [0|31] "" XXX
SG_ Cruise_Limit_Status : 13|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Limit_Target : 23|8@1+ (1,0) [0|15] "" XXX
SG_ Accel_Pedal_Pos : 31|8@1+ (1,0) [0|7] "" XXX
BO_ 1355 EV_PC6: 8 CGW
SG_ CF_Vcu_SbwWarnMsg : 16|3@1+ (1,0) [0|7] "" Vector__XXX
BO_ 1430 EV_PC2: 8 CGW
SG_ CR_Ldc_ActVol_LS_V : 32|8@1+ (0.1,0) [0|0] "V" Vector__XXX
BO_ 1535 EV_PC10: 8 CGW
SG_ CF_Vcu_EpbRequest : 37|1@1+ (1,0) [0|0] "" Vector__XXX
BO_ 908 RSPA11: 8 RSPA
SG_ CF_RSPA_State : 0|4@1+ (1,0) [0|15] "" XXX
SG_ CF_RSPA_Act : 4|2@1+ (1,0) [0|3] "" XXX
SG_ CF_RSPA_DecCmd : 6|2@1+ (1,0) [0|3] "" XXX
SG_ CF_RSPA_Trgt_Spd : 8|10@1+ (0.01,0) [0|10.23] "km/h" XXX
SG_ CF_RSPA_StopReq : 18|1@1+ (1,0) [0|2] "" XXX
SG_ CR_RSPA_EPB_Req : 22|2@1+ (1,0) [0|3] "" XXX
SG_ CF_RSPA_ACC_ACT : 50|1@1+ (1,0) [0|2] "" XXX
SG_ CF_RSPA_AliveCounter : 52|4@1+ (1,0) [0|15] "" XXX
SG_ CF_RSPA_CRC : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 914 S_MDPS11: 8 XXX
SG_ CF_Mdps_Stat : 0|4@1+ (1,0) [0|15] "" XXX
SG_ CR_Mdps_DrvTq : 8|12@1+ (1,0) [0|15] "" XXX
SG_ CR_Mdps_StrAng : 24|16@1- (1,0) [0|65535] "" XXX
SG_ CF_Mdps_AliveCnt : 47|8@0+ (1,0) [0|255] "" XXX
SG_ CF_Mdps_Chksum : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 357 S_MDPS12: 8 XXX
SG_ NEW_SIGNAL_1 : 0|12@1+ (1,0) [0|4095] "" XXX
SG_ NEW_SIGNAL_2 : 12|12@1+ (1,0) [0|4095] "" XXX
SG_ Counter : 48|4@1+ (1,0) [0|15] "" XXX
SG_ Checksum : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 352 AHB1: 8 iBAU
SG_ CF_Ahb_SLmp : 0|2@1+ (1,0) [0|3] "" CLU
SG_ CF_Ahb_Def : 2|2@1+ (1,0) [0|3] "" CGW
SG_ CF_Ahb_Act : 4|2@1+ (1,0) [0|3] "" Vector__XXX
SG_ CF_Ahb_Diag : 6|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ CF_Ahb_WLmp : 7|1@1+ (1,0) [0|1] "" CLU
SG_ CR_Ahb_StDep_mm : 8|16@1- (0.1,0) [-3276.8|3276.7] "mm" Vector__XXX
SG_ CF_Ahb_SnsFail : 24|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ CF_Ahb_PedalCalStat : 25|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ CF_Ahb_Bzzr : 26|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ CF_Ahb_ChkSum : 56|8@1+ (1,0) [0|255] "" Vector__XXX
BO_ 1191 4a7MFC: 8 XXX
SG_ PAINT1 : 0|1@0+ (1,0) [0|1] "" XXX
BO_ 1162 BCA11: 8 BCW
SG_ CF_BCA_State : 16|3@1+ (1,0) [0|7] "" CLU,iBAU
SG_ CF_BCA_Warning : 19|2@1+ (1,0) [0|3] "" CLU,iBAU
SG_ AliveCounter : 21|4@1+ (1,0) [0|15] "" CLU,iBAU
SG_ RCCA_Brake_Command : 29|1@1+ (1,0) [0|1] "" iBAU
SG_ Check_Sum : 56|8@1+ (1,0) [0|16] "" iBAU
BO_ 1136 P_STS: 6 CGW
SG_ HCU1_STS : 6|2@1+ (1,0) [0|3] "" BCW,EPB,FCA,MDPS,SCC,iBAU
SG_ HCU5_STS : 8|2@1+ (1,0) [0|3] "" EPB,FCA,MDPS,iBAU
BO_ 304 YRS11: 8 ACU
SG_ CR_Yrs_Yr : 0|16@1+ (0.005,-163.84) [-163.84|163.83] "deg/s" CGW,iBAU
SG_ CR_Yrs_LatAc : 16|16@1+ (0.000127465,-4.17677312) [-4.17677312|4.17651819] "g" iBAU
SG_ CF_Yrs_YrStat : 32|4@1+ (1,0) [0|15] "" iBAU
SG_ CF_Yrs_LatAcStat : 36|4@1+ (1,0) [0|15] "" iBAU
SG_ CF_Yrs_MCUStat : 40|4@1+ (1,0) [0|15] "" iBAU
SG_ CR_Yrs_MsgCnt1 : 48|4@1+ (1,0) [0|15] "" iBAU
SG_ CR_Yrs_Crc1 : 56|8@1+ (1,0) [0|255] "" iBAU
BO_ 320 YRS12: 8 ACU
SG_ CF_Yrs_LongAcStat : 16|4@1+ (1,0) [0|15] "" iBAU
SG_ CF_IMU_ResetStat : 20|4@1+ (1,0) [0|15] "" iBAU
SG_ YRS_Temp : 24|8@1+ (1,-68) [-68|187] "" iBAU
SG_ YRS_TempStat : 32|4@1+ (1,0) [0|15] "" iBAU
SG_ CF_Yrs_Type : 36|4@1+ (1,0) [0|15] "" iBAU
SG_ CR_Yrs_MsgCnt2 : 48|4@1+ (1,0) [0|15] "" iBAU
SG_ CR_Yrs_Crc2 : 56|8@1+ (1,0) [0|255] "" iBAU
SG_ CR_Yrs_LongAc : 0|16@1+ (0.000127465,-4.17677312) [-4.17677312|4.17651819] "g" CGW,iBAU
BO_ 1173 YRS13: 8 ACU
SG_ YRS_SeralNo : 16|48@1+ (1,0) [0|281474976710655] "" iBAU
BO_ 870 366_EMS: 8 EMS
SG_ N : 7|16@0+ (1,0.25) [0|16383.75] "rpm" XXX
SG_ EMS_Related : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ TQFR : 39|8@0+ (0.390625,0) [0|99.6094] "%" XXX
SG_ VS : 40|8@1+ (1,0) [0|255] "km/h" MDPS
SG_ SWI_IGK : 48|1@0+ (1,0) [0|1] "" XXX
BO_ 854 356: 8 XXX
SG_ PAINT1 : 32|1@0+ (1,0) [0|1] "" XXX
SG_ PAINT2 : 34|2@0+ (1,0) [0|1] "" XXX
SG_ PAINT3 : 36|2@0+ (1,0) [0|3] "" XXX
SG_ PAINT4 : 38|1@0+ (1,0) [0|1] "" XXX
BO_ 1042 ICM_412h: 8 ICM
SG_ T_Outside_input : 0|9@0+ (0.01,0) [0|5] "V" Vector__XXX
SG_ WarningSoundOutput_1Group : 5|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ WarningSoundOutput_2Group : 6|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ WarningSoundOutput_3Group : 7|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ TRIP_A_DT_Display_clock : 22|7@0+ (1,0) [0|99] "clock" Vector__XXX
SG_ TRIP_A_DT_Display_minute : 29|6@0+ (1,0) [0|59] "minute" Vector__XXX
SG_ TRIP_B_DT_Display_clock : 38|7@0+ (1,0) [0|99] "clock" Vector__XXX
SG_ TRIP_B_DT_Display_minute : 45|6@0+ (1,0) [0|59] "minute" Vector__XXX
SG_ PopupMessageOutput_1Level : 48|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ PopupMessageOutput_2Level : 49|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ PopupMessageOutput_3Level : 50|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ PopupMessageOutput_4Level : 51|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ PopupMessageOutput_5Level : 52|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ PopupMessageOutput_6Level : 53|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ PopupMessageOutput_7Level : 54|1@0+ (1,0) [0|1] "" Vector__XXX
SG_ PopupMessageOutput_8Level : 55|1@0+ (1,0) [0|1] "" Vector__XXX
VAL_ 909 CF_VSM_Warn 2 "FCW" 3 "AEB";

View File

@@ -0,0 +1,411 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT"
CM_ "Imported file _comma.dbc starts here"
BO_ 359 STEERING_IPAS_COMMA: 8 IPAS
SG_ STATE : 7|4@0+ (1,0) [0|15] "" XXX
SG_ ANGLE : 3|12@0- (1.5,0) [-510|510] "deg" XXX
SG_ SET_ME_X10 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ DIRECTION_CMD : 38|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_X40 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
CM BO_ STEERING_IPAS_COMMA "Copy of msg 614 so we can do angle control while the Park Assist ECU is connected (Panda spoofs 614 with 359 on connector J70). Note that addresses 0x266 and 0x167 are checksum-invariant";
BO_ 512 GAS_COMMAND: 6 EON
SG_ GAS_COMMAND : 7|16@0+ (0.159375,-75.555) [0|1] "" INTERCEPTOR
SG_ GAS_COMMAND2 : 23|16@0+ (0.159375,-151.111) [0|1] "" INTERCEPTOR
SG_ ENABLE : 39|1@0+ (1,0) [0|1] "" INTERCEPTOR
SG_ COUNTER_PEDAL : 35|4@0+ (1,0) [0|15] "" INTERCEPTOR
SG_ CHECKSUM_PEDAL : 47|8@0+ (1,0) [0|255] "" INTERCEPTOR
BO_ 513 GAS_SENSOR: 6 INTERCEPTOR
SG_ INTERCEPTOR_GAS : 7|16@0+ (0.159375,-75.555) [0|1] "" EON
SG_ INTERCEPTOR_GAS2 : 23|16@0+ (0.159375,-151.111) [0|1] "" EON
SG_ STATE : 39|4@0+ (1,0) [0|15] "" EON
SG_ COUNTER_PEDAL : 35|4@0+ (1,0) [0|15] "" EON
SG_ CHECKSUM_PEDAL : 47|8@0+ (1,0) [0|255] "" EON
VAL_ 513 STATE 5 "FAULT_TIMEOUT" 4 "FAULT_STARTUP" 3 "FAULT_SCE" 2 "FAULT_SEND" 1 "FAULT_BAD_CHECKSUM" 0 "NO_FAULT" ;
CM_ "Imported file _toyota_2017.dbc starts here"
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX DSU HCU EPS IPAS CGW
BO_ 36 KINEMATICS: 8 XXX
SG_ ACCEL_Y : 33|10@0+ (0.03589,-18.375) [0|65535] "m/s^2" XXX
SG_ YAW_RATE : 1|10@0+ (0.244,-125) [0|65535] "deg/sec" XXX
SG_ STEERING_TORQUE : 17|10@0+ (1,-512) [0|65535] "" XXX
BO_ 37 STEER_ANGLE_SENSOR: 8 XXX
SG_ STEER_ANGLE : 3|12@0- (1.5,0) [-500|500] "deg" XXX
SG_ STEER_FRACTION : 39|4@0- (0.1,0) [-0.7|0.7] "deg" XXX
SG_ STEER_RATE : 35|12@0- (1,0) [-2000|2000] "deg/s" XXX
BO_ 166 BRAKE: 8 XXX
SG_ BRAKE_AMOUNT : 7|8@0+ (1,0) [0|255] "" XXX
SG_ BRAKE_PEDAL : 23|8@0+ (1,0) [0|255] "" XXX
BO_ 170 WHEEL_SPEEDS: 8 XXX
SG_ WHEEL_SPEED_FR : 7|16@0+ (0.01,-67.67) [0|250] "kph" XXX
SG_ WHEEL_SPEED_FL : 23|16@0+ (0.01,-67.67) [0|250] "kph" XXX
SG_ WHEEL_SPEED_RR : 39|16@0+ (0.01,-67.67) [0|250] "kph" XXX
SG_ WHEEL_SPEED_RL : 55|16@0+ (0.01,-67.67) [0|250] "kph" XXX
BO_ 180 SPEED: 8 XXX
SG_ ENCODER : 39|8@0+ (1,0) [0|255] "" XXX
SG_ SPEED : 47|16@0+ (0.01,0) [0|250] "kph" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 353 DSU_SPEED: 7 XXX
SG_ FORWARD_SPEED : 15|16@0- (0.00390625,-30) [0|255] "kph" XXX
BO_ 452 ENGINE_RPM: 8 CGW
SG_ RPM : 7|16@0- (0.78125,0) [0|0] "rpm" SCS
BO_ 466 PCM_CRUISE: 8 XXX
SG_ GAS_RELEASED : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_ACTIVE : 5|1@0+ (1,0) [0|1] "" XXX
SG_ STANDSTILL_ON : 12|1@0+ (1,0) [0|1] "" XXX
SG_ ACCEL_NET : 23|16@0- (0.001,0) [-20|20] "m/s2" XXX
SG_ CRUISE_STATE : 55|4@0+ (1,0) [0|15] "" XXX
SG_ CANCEL_REQ : 49|1@1+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 467 PCM_CRUISE_2: 8 XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "kph" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "kph" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 552 ACCELEROMETER: 8 XXX
SG_ ACCEL_Z : 22|15@0- (1,0) [0|32767] "" XXX
SG_ ACCEL_X : 6|15@0- (0.001,0) [-20|20] "m/s2" XXX
BO_ 560 BRAKE_MODULE2: 7 XXX
SG_ BRAKE_PRESSED : 26|1@0+ (1,0) [0|1] "" XXX
BO_ 614 STEERING_IPAS: 8 IPAS
SG_ STATE : 7|4@0+ (1,0) [0|15] "" XXX
SG_ ANGLE : 3|12@0- (1.5,0) [-510|510] "deg" XXX
SG_ SET_ME_X10 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ DIRECTION_CMD : 38|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_X40 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00_1 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 643 PRE_COLLISION: 7 DSU
SG_ COUNTER : 7|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ FORCE : 23|16@0- (2,0) [0|255] "N" XXX
SG_ SET_ME_X002 : 33|8@0+ (1,0) [0|3] "" XXX
SG_ BRAKE_STATUS : 39|3@0+ (1,0) [0|255] "" XXX
SG_ STATE : 36|3@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X003 : 40|1@0+ (1,0) [0|1] "" XXX
SG_ PRECOLLISION_ACTIVE : 41|1@0+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 55|8@0+ (1,0) [0|255] "" XXX
BO_ 740 STEERING_LKA: 5 XXX
SG_ LKA_STATE : 31|8@0+ (1,0) [0|255] "" XXX
SG_ STEER_REQUEST : 0|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 6|6@0+ (1,0) [0|63] "" XXX
SG_ SET_ME_1 : 7|1@0+ (1,0) [0|1] "" XXX
SG_ STEER_TORQUE_CMD : 15|16@0- (1,0) [0|65535] "" XXX
SG_ CHECKSUM : 39|8@0+ (1,0) [0|255] "" XXX
BO_ 742 LEAD_INFO: 8 DSU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" HCU
SG_ LEAD_REL_SPEED : 23|12@0- (0.025,0) [-100|100] "m/s" HCU
SG_ LEAD_LONG_DIST : 7|13@0+ (0.05,0) [0|300] "m" HCU
BO_ 835 ACC_CONTROL: 8 DSU
SG_ ACCEL_CMD : 7|16@0- (0.001,0) [-20|20] "m/s2" HCU
SG_ SET_ME_X01 : 23|2@0+ (1,0) [0|3] "" HCU
SG_ DISTANCE : 20|1@0+ (1,0) [0|1] "" XXX
SG_ MINI_CAR : 21|1@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X3 : 19|4@0+ (1,0) [0|15] "" XXX
SG_ PERMIT_BRAKING : 30|1@0+ (1,0) [0|1] "" HCU
SG_ RELEASE_STANDSTILL : 31|1@0+ (1,0) [0|1] "" HCU
SG_ CANCEL_REQ : 24|1@0+ (1,0) [0|1] "" HCU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
SG_ ACCEL_CMD_ALT : 47|8@0- (0.05,0) [0|0] "m/s^2" XXX
BO_ 836 PRE_COLLISION_2: 8 DSU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 869 DSU_CRUISE : 7 DSU
SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX
SG_ SET_BTN : 2|1@0+ (1,0) [0|0] "" XXX
SG_ CANCEL_BTN : 1|1@0+ (1,0) [0|0] "" XXX
SG_ MAIN_ON : 0|1@0+ (1,0) [0|0] "" XXX
SG_ SET_SPEED : 15|8@0+ (1,0) [0|0] "km/h" XXX
SG_ CRUISE_REQUEST : 31|8@0+ (100,-12800) [0|0] "N" XXX
SG_ LEAD_DISTANCE : 39|8@0+ (1,0) [0|0] "m" XXX
BO_ 921 PCM_CRUISE_SM: 8 XXX
SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX
SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX
SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX
BO_ 951 ESP_CONTROL: 8 ESP
SG_ TC_DISABLED : 13|1@0+ (1,0) [0|1] "" XXX
SG_ VSC_DISABLED : 12|2@0+ (1,0) [0|1] "" XXX
SG_ BRAKE_LIGHTS_ACC : 18|1@0+ (1,0) [0|1] "" XXX
BO_ 1041 ACC_HUD: 8 DSU
SG_ FCW : 4|1@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X20 : 15|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X10 : 39|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X80 : 55|8@0+ (1,0) [0|1] "" XXX
BO_ 1042 LKAS_HUD: 8 XXX
SG_ BARRIERS : 1|2@0+ (1,0) [0|3] "" XXX
SG_ RIGHT_LINE : 3|2@0+ (1,0) [0|3] "" XXX
SG_ LEFT_LINE : 5|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_X01 : 7|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_X01_2 : 11|2@0+ (1,0) [0|3] "" XXX
SG_ LDA_ALERT : 9|2@0+ (1,0) [0|3] "" XXX
SG_ TWO_BEEPS : 12|1@0+ (1,0) [0|1] "" XXX
SG_ ADJUSTING_CAMERA : 13|1@0+ (1,0) [0|1] "" XXX
SG_ LDA_MALFUNCTION : 15|1@0+ (1,0) [0|1] "" XXX
SG_ REPEATED_BEEPS : 32|1@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X0C : 23|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X2C : 47|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X38 : 55|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X02 : 63|8@0+ (1,0) [0|1] "" XXX
BO_ 1043 TIME : 8 CGW
SG_ YEAR : 7|8@0+ (1,0) [0|0] "year" XXX
SG_ MONTH : 15|8@0+ (1,0) [0|0] "month" XXX
SG_ DAY : 23|8@0+ (1,0) [0|0] "day" XXX
SG_ HOUR : 31|8@0+ (1,0) [0|0] "hour" XXX
SG_ MINUTE : 39|8@0+ (1,0) [0|0] "minute" XXX
SG_ GMT_DIFF : 55|1@0+ (1,0) [0|0] "" XXX
SG_ GMTDIFF_HOURS : 54|4@0+ (1,0) [0|0] "hours" XXX
SG_ GMTDIFF_MINUTES : 50|6@0+ (1,0) [0|0] "minutes" XXX
SG_ SUMMER : 60|1@0+ (1,0) [0|0] "" XXX
BO_ 1408 VIN_PART_1: 8 CGW
SG_ VIN_1 : 7|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_2 : 15|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_3 : 23|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_4 : 31|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_5 : 39|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_6 : 47|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_7 : 55|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_8 : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 1409 VIN_PART_2: 8 CGW
SG_ VIN_9 : 7|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_10 : 15|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_11 : 23|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_12 : 31|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_13 : 39|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_14 : 47|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_15 : 55|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_16 : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 1410 VIN_PART_3: 8 CGW
SG_ VIN_17 : 7|8@0+ (1,0) [0|0] "" XXX
BO_ 1553 UI_SETTING: 8 XXX
SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX
BO_ 1556 STEERING_LEVERS: 8 XXX
SG_ TURN_SIGNALS : 29|2@0+ (1,0) [0|3] "" XXX
BO_ 1568 SEATS_DOORS: 8 XXX
SG_ SEATBELT_DRIVER_UNLATCHED : 62|1@0+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FL : 45|1@0+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RL : 42|1@0+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RR : 43|1@0+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FR : 44|1@0+ (1,0) [0|1] "" XXX
BO_ 1570 LIGHT_STALK: 8 SCM
SG_ AUTO_HIGH_BEAM : 37|1@0+ (1,0) [0|1] "" XXX
BO_ 1161 RSA1: 8 FCM
SG_ TSGN1 : 7|8@0+ (1,0) [0|0] "" XXX
SG_ TSGNGRY1 : 12|3@0+ (1,0) [0|0] "" XXX
SG_ TSGNHLT1 : 9|2@0+ (1,0) [0|0] "" XXX
SG_ SPDVAL1 : 23|8@0+ (1,0) [0|0] "kph" XXX
SG_ SPLSGN1 : 31|4@0+ (1,0) [0|0] "" XXX
SG_ SPLSGN2 : 27|4@0+ (1,0) [0|0] "" XXX
SG_ TSGN2 : 39|8@0+ (1,0) [0|0] "" XXX
SG_ TSGNGRY2 : 44|3@0+ (1,0) [0|0] "" XXX
SG_ TSGNHLT2 : 41|2@0+ (1,0) [0|0] "" XXX
SG_ SPDVAL2 : 55|8@0+ (1,0) [0|0] "" XXX
SG_ BZRRQ_P : 63|2@0+ (1,0) [0|0] "" XXX
SG_ BZRRQ_A : 61|2@0+ (1,0) [0|0] "" XXX
SG_ SYNCID1 : 59|4@0+ (1,0) [0|0] "" XXX
BO_ 1162 RSA2: 8 FCM
SG_ TSGN3 : 7|8@0+ (1,0) [0|0] "" XXX
SG_ TSGNGRY3 : 12|3@0+ (1,0) [0|0] "" XXX
SG_ TSGNHLT3 : 9|2@0+ (1,0) [0|0] "" XXX
SG_ SPLSGN3 : 31|4@0+ (1,0) [0|0] "" XXX
SG_ SPLSGN4 : 27|4@0+ (1,0) [0|0] "" XXX
SG_ TSGN4 : 39|8@0+ (1,0) [0|0] "" XXX
SG_ TSGNGRY4 : 44|3@0+ (1,0) [0|0] "" XXX
SG_ TSGNHLT4 : 41|2@0+ (1,0) [0|0] "" XXX
SG_ DPSGNREQ : 54|1@0+ (1,0) [0|0] "" XXX
SG_ SGNNUMP : 53|3@0+ (1,0) [0|0] "" XXX
SG_ SGNNUMA : 50|3@0+ (1,0) [0|0] "" XXX
SG_ SPDUNT : 63|2@0+ (1,0) [0|0] "" XXX
SG_ TSRWMSG : 61|2@0+ (1,0) [0|0] "" XXX
SG_ SYNCID2 : 59|4@0+ (1,0) [0|0] "" XXX
BO_ 1163 RSA3: 8 FCM
SG_ TSREQPD : 7|1@0+ (1,0) [0|0] "" XXX
SG_ TSRMSW : 6|1@0+ (1,0) [0|0] "" XXX
SG_ OTSGNNTM : 5|2@0+ (1,0) [0|0] "" XXX
SG_ NTLVLSPD : 3|2@0+ (1,0) [0|0] "" XXX
SG_ OVSPNTM : 1|2@0+ (1,0) [0|0] "" XXX
SG_ OVSPVALL : 11|4@0+ (1,-5) [0|0] "" XXX
SG_ OVSPVALM : 19|4@0+ (1,-5) [0|0] "" XXX
SG_ OVSPVALH : 27|4@0+ (1,-5) [0|0] "" XXX
SG_ TSRSPU : 33|2@0+ (1,0) [0|0] "" XXX
CM_ SG_ 36 ACCEL_Y "unit is tbd";
CM_ SG_ 36 YAW_RATE "verify";
CM_ SG_ 36 STEERING_TORQUE "does not seem the steer torque, tbd";
CM_ SG_ 37 STEER_FRACTION "1/15th of the signal STEER_ANGLE, which is 1.5 deg; note that 0x8 is never set";
CM_ SG_ 37 STEER_RATE "factor is tbd";
CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors";
CM_ SG_ 467 SET_SPEED "43 kph are shown as 28mph, so conversion isnt perfect";
CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph";
CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?";
CM_ SG_ 608 STEER_TORQUE_DRIVER "driver torque";
CM_ SG_ 608 STEER_OVERRIDE "set when driver torque exceeds a certain value";
CM_ SG_ 614 ANGLE "set to measured angle when ipas control isn't active";
CM_ SG_ 643 COUNTER "only used on cars that use this msg for cruise control";
CM_ SG_ 643 BRAKE_STATUS "only used on cars that use this msg for cruise control";
CM_ SG_ 643 PRECOLLISION_ACTIVE "set 0.5s before any braking";
CM_ SG_ 835 PERMIT_BRAKING "Original ACC has this going high when a car in front is detected. In openpilot and before the PERMIT_BRAKING name, this was "SET_ME_1" and is hardcoded to be high. Unsure if only informational or has an effect though existing usage in openpilot is to always set it to 1. Originally 'PMTBRKG' in the leaked toyota_2017_ref_pt.dbc file and name expansion speculated to be PerMiT BRaKinG.";
CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file.";
CM_ SG_ 921 UI_SET_SPEED "set speed shown in UI with user set unit";
CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel";
CM_ SG_ 1042 SET_ME_1 "unclear what this is, but it's always 1 in drive traces";
CM_ SG_ 1042 REPEATED_BEEPS "recommended for fcw and other important alerts";
CM_ SG_ 1161 SPDVAL1 "Numbers 0-199 is displayed, 200-254 displays circle without number and 255 is for no limit.";
CM_ SG_ 1161 SYNCID1 "counter from 1 to f at 1 Hz";
CM_ SG_ 1161 SPDVAL2 "conditional speed value 70"
CM_ SG_ 1162 SGNNUMP "1 if SPDVAL1 is set, otherwise 0";
CM_ SG_ 1162 SYNCID2 "counter from 1 to f at 1 Hz";
CM_ SG_ 1163 TSREQPD "always 1";
CM_ SG_ 1163 TSRMSW "always 1";
CM_ SG_ 1163 OTSGNNTM "always 3";
CM_ SG_ 1163 NTLVLSPD "always 3";
CM_ SG_ 1163 OVSPNTM "always 3";
CM_ SG_ 1163 OVSPVALL "-5 at start then 2 after 2 seconds";
CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds";
CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds";
CM_ SG_ 1163 TSRSPU "always 1";
VAL_ 466 CRUISE_STATE 8 "active" 7 "standstill" 1 "off";
VAL_ 467 LOW_SPEED_LOCKOUT 2 "low speed locked" 1 "ok";
VAL_ 614 STATE 3 "enabled" 1 "disabled";
VAL_ 614 DIRECTION_CMD 3 "right" 2 "center" 1 "left";
VAL_ 643 STATE 0 "normal" 1 "adaptive_cruise_control" 3 "emergency_braking";
VAL_ 921 CRUISE_CONTROL_STATE 2 "disabled" 11 "hold" 10 "hold_waiting_user_cmd" 6 "enabled" 5 "faulted";
VAL_ 1042 LDA_ALERT 3 "hold with continuous beep" 2 "LDA unavailable" 1 "hold" 0 "none";
VAL_ 1042 BARRIERS 3 "both" 2 "right" 1 "left" 0 "none";
VAL_ 1042 RIGHT_LINE 3 "orange" 2 "faded" 1 "solid" 0 "none";
VAL_ 1042 LEFT_LINE 3 "orange" 2 "faded" 1 "solid" 0 "none";
VAL_ 1553 UNITS 1 "km" 2 "miles";
VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left";
VAL_ 1161 TSGN1 1 "speed sign" 0 "none";
VAL_ 1161 TSGN2 1 "speed sign" 0 "none";
VAL_ 1161 SPLSGN2 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";
VAL_ 1162 TSGN3 0 "none" 1 "speed sign" 2 "0 unlimited" 7 "unlimited" 16 "highway" 17 "no highway" 18 "motorway" 19 "no motorway" 20 "in city" 21 "outside city" 22 "pedestrian area" 23 "no pedestrian area" 65 "no overtaking left" 66 "no overtaking right" 67 "overtaking allowed again" 129 "no entry";
VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";
CM_ "CHFFR_METRIC 37 STEER_ANGLE STEER_ANGLE 0.36 180";
CM_ "lexus_is_2018_pt.dbc starts here"
BO_ 550 BRAKE_MODULE: 8 XXX
SG_ BRAKE_PRESSURE : 0|9@0+ (1,0) [0|511] "" XXX
SG_ BRAKE_POSITION : 16|9@0+ (1,0) [0|511] "" XXX
SG_ BRAKE_PRESSED : 37|1@0+ (1,0) [0|1] "" XXX
BO_ 581 GAS_PEDAL_ALT: 5 XXX
SG_ GAS_PEDAL : 23|8@0+ (0.005,0) [0|1] "" XXX
BO_ 705 GAS_PEDAL: 8 XXX
SG_ GAS_RELEASED : 3|1@0+ (1,0) [0|1] "" XXX
SG_ GAS_PEDAL : 55|8@0+ (0.005,0) [0|1] "" XXX
BO_ 608 STEER_TORQUE_SENSOR: 8 XXX
SG_ STEER_TORQUE_EPS : 47|16@0- (1.30,0) [-20000|20000] "" XXX
SG_ STEER_TORQUE_DRIVER : 15|16@0- (1,0) [-32768|32767] "" XXX
SG_ STEER_OVERRIDE : 0|1@0+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
SG_ STEER_ANGLE : 31|16@0- (0.0573,0) [-500|500] "" XXX
BO_ 610 EPS_STATUS: 5 EPS
SG_ IPAS_STATE : 3|4@0+ (1,0) [0|15] "" XXX
SG_ LKA_STATE : 31|7@0+ (1,0) [0|127] "" XXX
SG_ TYPE : 24|1@0+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 39|8@0+ (1,0) [0|255] "" XXX
BO_ 956 GEAR_PACKET: 8 XXX
SG_ GEAR : 13|6@0+ (1,0) [0|63] "" XXX
BO_ 1009 PCM_CRUISE_ALT: 8 XXX
SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX
SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX
BO_ 1599 LIGHT_STALK_ISH: 8 SCM
SG_ AUTO_HIGH_BEAM : 19|1@0+ (1,0) [0|1] "" XXX
CM_ SG_ 550 BRAKE_PRESSURE "seems prop to pedal force";
CM_ SG_ 550 BRAKE_POSITION "seems proportional to pedal displacement, unclear the max value of 0x1c8";
CM_ SG_ 610 TYPE "seems 1 on Corolla, 0 on all others";
CM_ SG_ 1009 SET_SPEED "units seem to be whatever the car is set to";
VAL_ 956 GEAR 0 "D" 1 "S" 8 "N" 16 "R" 32 "P";
VAL_ 610 IPAS_STATE 5 "override" 3 "enabled" 1 "disabled";
VAL_ 610 LKA_STATE 25 "temporary_fault" 9 "temporary_fault2" 5 "active" 1 "standby";

View File

@@ -0,0 +1,408 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT"
CM_ "Imported file _comma.dbc starts here"
BO_ 359 STEERING_IPAS_COMMA: 8 IPAS
SG_ STATE : 7|4@0+ (1,0) [0|15] "" XXX
SG_ ANGLE : 3|12@0- (1.5,0) [-510|510] "deg" XXX
SG_ SET_ME_X10 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ DIRECTION_CMD : 38|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_X40 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
CM BO_ STEERING_IPAS_COMMA "Copy of msg 614 so we can do angle control while the Park Assist ECU is connected (Panda spoofs 614 with 359 on connector J70). Note that addresses 0x266 and 0x167 are checksum-invariant";
BO_ 512 GAS_COMMAND: 6 EON
SG_ GAS_COMMAND : 7|16@0+ (0.159375,-75.555) [0|1] "" INTERCEPTOR
SG_ GAS_COMMAND2 : 23|16@0+ (0.159375,-151.111) [0|1] "" INTERCEPTOR
SG_ ENABLE : 39|1@0+ (1,0) [0|1] "" INTERCEPTOR
SG_ COUNTER_PEDAL : 35|4@0+ (1,0) [0|15] "" INTERCEPTOR
SG_ CHECKSUM_PEDAL : 47|8@0+ (1,0) [0|255] "" INTERCEPTOR
BO_ 513 GAS_SENSOR: 6 INTERCEPTOR
SG_ INTERCEPTOR_GAS : 7|16@0+ (0.159375,-75.555) [0|1] "" EON
SG_ INTERCEPTOR_GAS2 : 23|16@0+ (0.159375,-151.111) [0|1] "" EON
SG_ STATE : 39|4@0+ (1,0) [0|15] "" EON
SG_ COUNTER_PEDAL : 35|4@0+ (1,0) [0|15] "" EON
SG_ CHECKSUM_PEDAL : 47|8@0+ (1,0) [0|255] "" EON
VAL_ 513 STATE 5 "FAULT_TIMEOUT" 4 "FAULT_STARTUP" 3 "FAULT_SCE" 2 "FAULT_SEND" 1 "FAULT_BAD_CHECKSUM" 0 "NO_FAULT" ;
CM_ "Imported file _toyota_2017.dbc starts here"
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX DSU HCU EPS IPAS CGW
BO_ 36 KINEMATICS: 8 XXX
SG_ ACCEL_Y : 33|10@0+ (0.03589,-18.375) [0|65535] "m/s^2" XXX
SG_ YAW_RATE : 1|10@0+ (0.244,-125) [0|65535] "deg/sec" XXX
SG_ STEERING_TORQUE : 17|10@0+ (1,-512) [0|65535] "" XXX
BO_ 37 STEER_ANGLE_SENSOR: 8 XXX
SG_ STEER_ANGLE : 3|12@0- (1.5,0) [-500|500] "deg" XXX
SG_ STEER_FRACTION : 39|4@0- (0.1,0) [-0.7|0.7] "deg" XXX
SG_ STEER_RATE : 35|12@0- (1,0) [-2000|2000] "deg/s" XXX
BO_ 166 BRAKE: 8 XXX
SG_ BRAKE_AMOUNT : 7|8@0+ (1,0) [0|255] "" XXX
SG_ BRAKE_PEDAL : 23|8@0+ (1,0) [0|255] "" XXX
BO_ 170 WHEEL_SPEEDS: 8 XXX
SG_ WHEEL_SPEED_FR : 7|16@0+ (0.01,-67.67) [0|250] "kph" XXX
SG_ WHEEL_SPEED_FL : 23|16@0+ (0.01,-67.67) [0|250] "kph" XXX
SG_ WHEEL_SPEED_RR : 39|16@0+ (0.01,-67.67) [0|250] "kph" XXX
SG_ WHEEL_SPEED_RL : 55|16@0+ (0.01,-67.67) [0|250] "kph" XXX
BO_ 180 SPEED: 8 XXX
SG_ ENCODER : 39|8@0+ (1,0) [0|255] "" XXX
SG_ SPEED : 47|16@0+ (0.01,0) [0|250] "kph" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 353 DSU_SPEED: 8 XXX
SG_ FORWARD_SPEED : 15|16@0- (0.00390625,-30) [0|255] "kph" XXX
BO_ 452 ENGINE_RPM: 8 CGW
SG_ RPM : 7|16@0- (0.78125,0) [0|0] "rpm" SCS
BO_ 466 PCM_CRUISE: 8 XXX
SG_ GAS_RELEASED : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_ACTIVE : 5|1@0+ (1,0) [0|1] "" XXX
SG_ STANDSTILL_ON : 12|1@0+ (1,0) [0|1] "" XXX
SG_ ACCEL_NET : 23|16@0- (0.001,0) [-20|20] "m/s2" XXX
SG_ CRUISE_STATE : 55|4@0+ (1,0) [0|15] "" XXX
SG_ CANCEL_REQ : 49|1@1+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 467 PCM_CRUISE_2: 8 XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "kph" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "kph" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 552 ACCELEROMETER: 8 XXX
SG_ ACCEL_Z : 22|15@0- (1,0) [0|32767] "" XXX
SG_ ACCEL_X : 6|15@0- (0.001,0) [-20|20] "m/s2" XXX
BO_ 560 BRAKE_MODULE2: 7 XXX
SG_ BRAKE_PRESSED : 26|1@0+ (1,0) [0|1] "" XXX
BO_ 614 STEERING_IPAS: 8 IPAS
SG_ STATE : 7|4@0+ (1,0) [0|15] "" XXX
SG_ ANGLE : 3|12@0- (1.5,0) [-510|510] "deg" XXX
SG_ SET_ME_X10 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ DIRECTION_CMD : 38|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_X40 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00_1 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 643 PRE_COLLISION: 7 DSU
SG_ COUNTER : 7|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ FORCE : 23|16@0- (2,0) [0|255] "N" XXX
SG_ SET_ME_X002 : 33|8@0+ (1,0) [0|3] "" XXX
SG_ BRAKE_STATUS : 39|3@0+ (1,0) [0|255] "" XXX
SG_ STATE : 36|3@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X003 : 40|1@0+ (1,0) [0|1] "" XXX
SG_ PRECOLLISION_ACTIVE : 41|1@0+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 55|8@0+ (1,0) [0|255] "" XXX
BO_ 740 STEERING_LKA: 5 XXX
SG_ LKA_STATE : 31|8@0+ (1,0) [0|255] "" XXX
SG_ STEER_REQUEST : 0|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 6|6@0+ (1,0) [0|63] "" XXX
SG_ SET_ME_1 : 7|1@0+ (1,0) [0|1] "" XXX
SG_ STEER_TORQUE_CMD : 15|16@0- (1,0) [0|65535] "" XXX
SG_ CHECKSUM : 39|8@0+ (1,0) [0|255] "" XXX
BO_ 742 LEAD_INFO: 8 DSU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" HCU
SG_ LEAD_REL_SPEED : 23|12@0- (0.025,0) [-100|100] "m/s" HCU
SG_ LEAD_LONG_DIST : 7|13@0+ (0.05,0) [0|300] "m" HCU
BO_ 835 ACC_CONTROL: 8 DSU
SG_ ACCEL_CMD : 7|16@0- (0.001,0) [-20|20] "m/s2" HCU
SG_ SET_ME_X01 : 23|2@0+ (1,0) [0|3] "" HCU
SG_ DISTANCE : 20|1@0+ (1,0) [0|1] "" XXX
SG_ MINI_CAR : 21|1@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X3 : 19|4@0+ (1,0) [0|15] "" XXX
SG_ SET_ME_1 : 30|1@0+ (1,0) [0|1] "" HCU
SG_ RELEASE_STANDSTILL : 31|1@0+ (1,0) [0|1] "" HCU
SG_ CANCEL_REQ : 24|1@0+ (1,0) [0|1] "" HCU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 836 PRE_COLLISION_2: 8 DSU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 869 DSU_CRUISE : 7 DSU
SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX
SG_ SET_BTN : 2|1@0+ (1,0) [0|0] "" XXX
SG_ CANCEL_BTN : 1|1@0+ (1,0) [0|0] "" XXX
SG_ MAIN_ON : 0|1@0+ (1,0) [0|0] "" XXX
SG_ SET_SPEED : 15|8@0+ (1,0) [0|0] "km/h" XXX
SG_ CRUISE_REQUEST : 31|8@0+ (100,-12800) [0|0] "N" XXX
SG_ LEAD_DISTANCE : 39|8@0+ (1,0) [0|0] "m" XXX
BO_ 921 PCM_CRUISE_SM: 8 XXX
SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX
SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX
SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX
BO_ 951 ESP_CONTROL: 8 ESP
SG_ TC_DISABLED : 13|1@0+ (1,0) [0|1] "" XXX
SG_ VSC_DISABLED : 12|2@0+ (1,0) [0|1] "" XXX
SG_ BRAKE_LIGHTS_ACC : 18|1@0+ (1,0) [0|1] "" XXX
BO_ 1041 ACC_HUD: 8 DSU
SG_ FCW : 4|1@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X20 : 15|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X10 : 39|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X80 : 55|8@0+ (1,0) [0|1] "" XXX
BO_ 1042 LKAS_HUD: 8 XXX
SG_ BARRIERS : 1|2@0+ (1,0) [0|3] "" XXX
SG_ RIGHT_LINE : 3|2@0+ (1,0) [0|3] "" XXX
SG_ LEFT_LINE : 5|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_X01 : 7|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_X01_2 : 11|2@0+ (1,0) [0|3] "" XXX
SG_ LDA_ALERT : 9|2@0+ (1,0) [0|3] "" XXX
SG_ TWO_BEEPS : 12|1@0+ (1,0) [0|1] "" XXX
SG_ ADJUSTING_CAMERA : 13|1@0+ (1,0) [0|1] "" XXX
SG_ LDA_MALFUNCTION : 15|1@0+ (1,0) [0|1] "" XXX
SG_ REPEATED_BEEPS : 32|1@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X0C : 23|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X2C : 47|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X38 : 55|8@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_X02 : 63|8@0+ (1,0) [0|1] "" XXX
BO_ 1043 TIME : 8 CGW
SG_ YEAR : 7|8@0+ (1,0) [0|0] "year" XXX
SG_ MONTH : 15|8@0+ (1,0) [0|0] "month" XXX
SG_ DAY : 23|8@0+ (1,0) [0|0] "day" XXX
SG_ HOUR : 31|8@0+ (1,0) [0|0] "hour" XXX
SG_ MINUTE : 39|8@0+ (1,0) [0|0] "minute" XXX
SG_ GMT_DIFF : 55|1@0+ (1,0) [0|0] "" XXX
SG_ GMTDIFF_HOURS : 54|4@0+ (1,0) [0|0] "hours" XXX
SG_ GMTDIFF_MINUTES : 50|6@0+ (1,0) [0|0] "minutes" XXX
SG_ SUMMER : 60|1@0+ (1,0) [0|0] "" XXX
BO_ 1408 VIN_PART_1: 8 CGW
SG_ VIN_1 : 7|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_2 : 15|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_3 : 23|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_4 : 31|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_5 : 39|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_6 : 47|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_7 : 55|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_8 : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 1409 VIN_PART_2: 8 CGW
SG_ VIN_9 : 7|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_10 : 15|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_11 : 23|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_12 : 31|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_13 : 39|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_14 : 47|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_15 : 55|8@0+ (1,0) [0|0] "" XXX
SG_ VIN_16 : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 1410 VIN_PART_3: 8 CGW
SG_ VIN_17 : 7|8@0+ (1,0) [0|0] "" XXX
BO_ 1553 UI_SETTING: 8 XXX
SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX
BO_ 1556 STEERING_LEVERS: 8 XXX
SG_ TURN_SIGNALS : 29|2@0+ (1,0) [0|3] "" XXX
BO_ 1568 SEATS_DOORS: 8 XXX
SG_ SEATBELT_DRIVER_UNLATCHED : 62|1@0+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FL : 45|1@0+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RL : 42|1@0+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RR : 43|1@0+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FR : 44|1@0+ (1,0) [0|1] "" XXX
BO_ 1570 LIGHT_STALK: 8 SCM
SG_ AUTO_HIGH_BEAM : 37|1@0+ (1,0) [0|1] "" XXX
BO_ 1161 RSA1: 8 FCM
SG_ TSGN1 : 7|8@0+ (1,0) [0|0] "" XXX
SG_ TSGNGRY1 : 12|3@0+ (1,0) [0|0] "" XXX
SG_ TSGNHLT1 : 9|2@0+ (1,0) [0|0] "" XXX
SG_ SPDVAL1 : 23|8@0+ (1,0) [0|0] "kph" XXX
SG_ SPLSGN1 : 31|4@0+ (1,0) [0|0] "" XXX
SG_ SPLSGN2 : 27|4@0+ (1,0) [0|0] "" XXX
SG_ TSGN2 : 39|8@0+ (1,0) [0|0] "" XXX
SG_ TSGNGRY2 : 44|3@0+ (1,0) [0|0] "" XXX
SG_ TSGNHLT2 : 41|2@0+ (1,0) [0|0] "" XXX
SG_ SPDVAL2 : 55|8@0+ (1,0) [0|0] "" XXX
SG_ BZRRQ_P : 63|2@0+ (1,0) [0|0] "" XXX
SG_ BZRRQ_A : 61|2@0+ (1,0) [0|0] "" XXX
SG_ SYNCID1 : 59|4@0+ (1,0) [0|0] "" XXX
BO_ 1162 RSA2: 8 FCM
SG_ TSGN3 : 7|8@0+ (1,0) [0|0] "" XXX
SG_ TSGNGRY3 : 12|3@0+ (1,0) [0|0] "" XXX
SG_ TSGNHLT3 : 9|2@0+ (1,0) [0|0] "" XXX
SG_ SPLSGN3 : 31|4@0+ (1,0) [0|0] "" XXX
SG_ SPLSGN4 : 27|4@0+ (1,0) [0|0] "" XXX
SG_ TSGN4 : 39|8@0+ (1,0) [0|0] "" XXX
SG_ TSGNGRY4 : 44|3@0+ (1,0) [0|0] "" XXX
SG_ TSGNHLT4 : 41|2@0+ (1,0) [0|0] "" XXX
SG_ DPSGNREQ : 54|1@0+ (1,0) [0|0] "" XXX
SG_ SGNNUMP : 53|3@0+ (1,0) [0|0] "" XXX
SG_ SGNNUMA : 50|3@0+ (1,0) [0|0] "" XXX
SG_ SPDUNT : 63|2@0+ (1,0) [0|0] "" XXX
SG_ TSRWMSG : 61|2@0+ (1,0) [0|0] "" XXX
SG_ SYNCID2 : 59|4@0+ (1,0) [0|0] "" XXX
BO_ 1163 RSA3: 8 FCM
SG_ TSREQPD : 7|1@0+ (1,0) [0|0] "" XXX
SG_ TSRMSW : 6|1@0+ (1,0) [0|0] "" XXX
SG_ OTSGNNTM : 5|2@0+ (1,0) [0|0] "" XXX
SG_ NTLVLSPD : 3|2@0+ (1,0) [0|0] "" XXX
SG_ OVSPNTM : 1|2@0+ (1,0) [0|0] "" XXX
SG_ OVSPVALL : 11|4@0+ (1,-5) [0|0] "" XXX
SG_ OVSPVALM : 19|4@0+ (1,-5) [0|0] "" XXX
SG_ OVSPVALH : 27|4@0+ (1,-5) [0|0] "" XXX
SG_ TSRSPU : 33|2@0+ (1,0) [0|0] "" XXX
CM_ SG_ 36 ACCEL_Y "unit is tbd";
CM_ SG_ 36 YAW_RATE "verify";
CM_ SG_ 36 STEERING_TORQUE "does not seem the steer torque, tbd";
CM_ SG_ 37 STEER_FRACTION "1/15th of the signal STEER_ANGLE, which is 1.5 deg; note that 0x8 is never set";
CM_ SG_ 37 STEER_RATE "factor is tbd";
CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors";
CM_ SG_ 467 SET_SPEED "43 kph are shown as 28mph, so conversion isnt perfect";
CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph";
CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?";
CM_ SG_ 608 STEER_TORQUE_DRIVER "driver torque";
CM_ SG_ 608 STEER_OVERRIDE "set when driver torque exceeds a certain value";
CM_ SG_ 614 ANGLE "set to measured angle when ipas control isn't active";
CM_ SG_ 643 COUNTER "only used on cars that use this msg for cruise control";
CM_ SG_ 643 BRAKE_STATUS "only used on cars that use this msg for cruise control";
CM_ SG_ 643 PRECOLLISION_ACTIVE "set 0.5s before any braking";
CM_ SG_ 921 UI_SET_SPEED "set speed shown in UI with user set unit";
CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel";
CM_ SG_ 1042 SET_ME_1 "unclear what this is, but it's always 1 in drive traces";
CM_ SG_ 1042 REPEATED_BEEPS "recommended for fcw and other important alerts";
CM_ SG_ 1161 SPDVAL1 "Numbers 0-199 is displayed, 200-254 displays circle without number and 255 is for no limit.";
CM_ SG_ 1161 SYNCID1 "counter from 1 to f at 1 Hz";
CM_ SG_ 1161 SPDVAL2 "conditional speed value 70"
CM_ SG_ 1162 SGNNUMP "1 if SPDVAL1 is set, otherwise 0";
CM_ SG_ 1162 SYNCID2 "counter from 1 to f at 1 Hz";
CM_ SG_ 1163 TSREQPD "always 1";
CM_ SG_ 1163 TSRMSW "always 1";
CM_ SG_ 1163 OTSGNNTM "always 3";
CM_ SG_ 1163 NTLVLSPD "always 3";
CM_ SG_ 1163 OVSPNTM "always 3";
CM_ SG_ 1163 OVSPVALL "-5 at start then 2 after 2 seconds";
CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds";
CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds";
CM_ SG_ 1163 TSRSPU "always 1";
VAL_ 466 CRUISE_STATE 8 "active" 7 "standstill" 1 "off";
VAL_ 467 LOW_SPEED_LOCKOUT 2 "low speed locked" 1 "ok";
VAL_ 614 STATE 3 "enabled" 1 "disabled";
VAL_ 614 DIRECTION_CMD 3 "right" 2 "center" 1 "left";
VAL_ 643 STATE 0 "normal" 1 "adaptive_cruise_control" 3 "emergency_braking";
VAL_ 921 CRUISE_CONTROL_STATE 2 "disabled" 11 "hold" 10 "hold_waiting_user_cmd" 6 "enabled" 5 "faulted";
VAL_ 1042 LDA_ALERT 3 "hold with continuous beep" 2 "LDA unavailable" 1 "hold" 0 "none";
VAL_ 1042 BARRIERS 3 "both" 2 "right" 1 "left" 0 "none";
VAL_ 1042 RIGHT_LINE 3 "orange" 2 "faded" 1 "solid" 0 "none";
VAL_ 1042 LEFT_LINE 3 "orange" 2 "faded" 1 "solid" 0 "none";
VAL_ 1553 UNITS 1 "km" 2 "miles";
VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left";
VAL_ 1161 TSGN1 1 "speed sign" 0 "none";
VAL_ 1161 TSGN2 1 "speed sign" 0 "none";
VAL_ 1161 SPLSGN2 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";
VAL_ 1162 TSGN3 0 "none" 1 "speed sign" 2 "0 unlimited" 7 "unlimited" 16 "highway" 17 "no highway" 18 "motorway" 19 "no motorway" 20 "in city" 21 "outside city" 22 "pedestrian area" 23 "no pedestrian area" 65 "no overtaking left" 66 "no overtaking right" 67 "overtaking allowed again" 129 "no entry";
VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";
CM_ "CHFFR_METRIC 37 STEER_ANGLE STEER_ANGLE 0.36 180";
CM_ "lexus_nxt_2015_pt.dbc starts here"
BO_ 550 BRAKE_MODULE: 8 XXX
SG_ BRAKE_PRESSURE : 0|9@0+ (1,0) [0|511] "" XXX
SG_ BRAKE_POSITION : 16|9@0+ (1,0) [0|511] "" XXX
SG_ BRAKE_PRESSED : 37|1@0+ (1,0) [0|1] "" XXX
BO_ 581 GAS_PEDAL_ALT: 5 XXX
SG_ GAS_PEDAL : 23|8@0+ (0.005,0) [0|1] "" XXX
BO_ 705 GAS_PEDAL: 8 XXX
SG_ GAS_RELEASED : 3|1@0+ (1,0) [0|1] "" XXX
SG_ GAS_PEDAL : 55|8@0+ (0.005,0) [0|1] "" XXX
BO_ 608 STEER_TORQUE_SENSOR: 8 XXX
SG_ STEER_TORQUE_EPS : 47|16@0- (1.0,0) [-20000|20000] "" XXX
SG_ STEER_TORQUE_DRIVER : 15|16@0- (1,0) [-32768|32767] "" XXX
SG_ STEER_OVERRIDE : 0|1@0+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
SG_ STEER_ANGLE : 31|16@0- (0.0573,0) [-500|500] "" XXX
BO_ 610 EPS_STATUS: 5 EPS
SG_ IPAS_STATE : 3|4@0+ (1,0) [0|15] "" XXX
SG_ LKA_STATE : 31|7@0+ (1,0) [0|127] "" XXX
SG_ TYPE : 24|1@0+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 39|8@0+ (1,0) [0|255] "" XXX
BO_ 956 GEAR_PACKET: 8 XXX
SG_ GEAR : 13|6@0+ (1,0) [0|63] "" XXX
BO_ 1009 PCM_CRUISE_ALT: 8 XXX
SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX
SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX
BO_ 1599 LIGHT_STALK_ISH: 8 SCM
SG_ AUTO_HIGH_BEAM : 19|1@0+ (1,0) [0|1] "" XXX
CM_ SG_ 550 BRAKE_PRESSURE "seems prop to pedal force";
CM_ SG_ 550 BRAKE_POSITION "seems proportional to pedal displacement, unclear the max value of 0x1c8";
CM_ SG_ 610 TYPE "seems 1 on Corolla, 0 on all others";
CM_ SG_ 1009 SET_SPEED "units seem to be whatever the car is set to";
VAL_ 956 GEAR 0 "D" 1 "S" 8 "N" 16 "R" 32 "P";
VAL_ 610 IPAS_STATE 5 "override" 3 "enabled" 1 "disabled";
VAL_ 610 LKA_STATE 25 "temporary_fault" 9 "temporary_fault2" 5 "active" 1 "standby";

View File

@@ -0,0 +1,258 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT"
CM_ "Imported file _subaru_preglobal_2015.dbc starts here"
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX X
BO_ 2 Steering: 8 XXX
SG_ Steering_Angle : 7|16@0- (0.1,0) [-500|500] "degree" XXX
SG_ Counter : 27|3@0+ (1,0) [0|7] "" XXX
SG_ Checksum : 39|8@0+ (1,0) [0|255] "" XXX
BO_ 208 G_Sensor: 8 XXX
SG_ Steering_Angle : 0|16@1- (-0.1,0) [-500|500] "" XXX
SG_ Lateral : 16|16@1- (-0.0035,1) [-255|255] "" XXX
SG_ Longitudinal : 48|16@1- (-0.00035,0) [-255|255] "" XXX
BO_ 209 Brake_Pedal: 8 XXX
SG_ Speed : 0|16@1+ (0.05625,0) [0|255] "KPH" XXX
SG_ Brake_Pedal : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 210 Brake_2: 8 XXX
SG_ Brake_Light : 35|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Related : 36|1@1+ (1,0) [0|1] "" XXX
SG_ Right_Brake : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Left_Brake : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 211 Brake_Type: 8 XXX
SG_ Brake_Light : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Speed_Counter : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_Cruise_On : 42|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal_On : 46|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 48|8@1+ (1,0) [0|255] "" XXX
BO_ 212 Wheel_Speeds: 8 XXX
SG_ FL : 0|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ FR : 16|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ RL : 32|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ RR : 48|16@1+ (0.0592,0) [0|255] "KPH" XXX
BO_ 320 Throttle: 8 XXX
SG_ Throttle_Pedal : 0|8@1+ (0.392157,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Not_Full_Throttle : 14|1@1+ (1,0) [0|1] "" XXX
SG_ Engine_RPM : 16|14@1+ (1,0) [0|32767] "" XXX
SG_ Off_Throttle : 30|1@1+ (1,0) [0|1] "" XXX
SG_ Throttle_Cruise : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Combo : 40|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Body : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Off_Throttle_2 : 56|1@1+ (1,0) [0|1] "" XXX
BO_ 321 Engine: 8 XXX
SG_ Engine_Torque : 0|15@1+ (1,0) [0|255] "" XXX
SG_ Engine_Stop : 15|1@1+ (1,0) [0|1] "" XXX
SG_ Wheel_Torque : 16|12@1+ (1,0) [0|4095] "" XXX
SG_ Engine_RPM : 32|12@1+ (1,0) [0|8191] "" XXX
BO_ 324 CruiseControl: 8 XXX
SG_ OnOffButton : 2|1@1+ (1,0) [0|1] "" XXX
SG_ SET_BUTTON : 3|1@1+ (1,0) [0|1] "" XXX
SG_ RES_BUTTON : 4|1@1+ (1,0) [0|1] "" XXX
SG_ Button : 13|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_On : 48|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 49|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal_On : 51|1@1+ (1,0) [0|1] "" XXX
BO_ 328 Transmission: 8 XXX
SG_ Manual_Gear : 4|4@1+ (1,0) [0|15] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Transmission_Engine : 16|15@1+ (1,0) [0|65535] "" XXX
SG_ Gear : 48|4@1+ (1,0) [0|15] "" XXX
SG_ Gear_2 : 52|4@1+ (1,0) [0|15] "" XXX
SG_ Paddle_Shift : 60|2@1+ (1,0) [0|3] "" XXX
BO_ 329 CVT_Ratio: 8 XXX
BO_ 336 Brake_Pressure: 8 XXX
SG_ Brake_Pressure_Right : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_Pressure_Left : 8|8@1+ (1,0) [0|255] "" XXX
BO_ 338 Stalk: 8 XXX
SG_ Counter : 12|4@1+ (1,0) [0|15] "" XXX
SG_ Brake_Light : 52|1@1+ (1,0) [0|1] "" XXX
SG_ Runlights : 58|1@1+ (1,0) [0|1] "" XXX
SG_ Headlights : 59|1@1+ (1,0) [0|1] "" XXX
SG_ Highbeam : 60|1@1+ (1,0) [0|1] "" XXX
SG_ Wiper : 62|1@1+ (1,0) [0|1] "" XXX
BO_ 352 ES_Brake: 8 XXX
SG_ Brake_Pressure : 0|16@1+ (1,0) [0|255] "" XXX
SG_ Brake_Light : 20|1@1+ (1,0) [0|1] "" XXX
SG_ ES_Error : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_On : 22|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 23|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 48|3@1+ (1,0) [0|7] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 353 ES_CruiseThrottle: 8 XXX
SG_ Throttle_Cruise : 0|12@1+ (1,0) [0|4095] "" XXX
SG_ Signal1 : 12|4@1+ (1,0) [0|15] "" XXX
SG_ Cruise_Activated : 16|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 17|3@1+ (1,0) [0|7] "" XXX
SG_ Brake_On : 20|1@1+ (1,0) [0|1] "" XXX
SG_ DistanceSwap : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Standstill : 22|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 23|1@1+ (1,0) [0|1] "" XXX
SG_ CloseDistance : 24|8@1+ (0.0196,0) [0|255] "m" XXX
SG_ Signal4 : 32|9@1+ (1,0) [0|255] "" XXX
SG_ Standstill_2 : 41|1@1+ (1,0) [0|1] "" XXX
SG_ ES_Error : 42|1@1+ (1,0) [0|1] "" XXX
SG_ Signal5 : 43|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 44|3@1+ (1,0) [0|7] "" XXX
SG_ Signal6 : 47|1@1+ (1,0) [0|1] "" XXX
SG_ Button : 48|3@1+ (1,0) [0|7] "" XXX
SG_ Signal7 : 51|5@1+ (1,0) [0|31] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 354 ES_RPM: 8 XXX
SG_ Brake : 8|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 9|1@1+ (1,0) [0|1] "" XXX
SG_ RPM : 16|16@1+ (1,0) [0|65535] "" XXX
SG_ Checksum : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 48|3@1+ (1,0) [0|7] "" XXX
BO_ 356 ES_LKAS: 8 XXX
SG_ Counter : 0|3@1+ (1,0) [0|7] "" XXX
SG_ LKAS_Command : 8|13@1- (-1,0) [-4096|4096] "" XXX
SG_ LKAS_Active : 24|1@1+ (1,0) [0|1] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 359 ES_LDW: 8 XXX
SG_ All_depart_2015 : 0|1@1+ (1,0) [0|1] "" XXX
SG_ Right_Line_2017 : 24|1@1+ (1,0) [0|1] "" XXX
SG_ Left_Line_2017 : 25|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1All_Depart : 28|1@1+ (1,0) [0|1] "" XXX
SG_ Sig2All_Depart : 31|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Inactive_2017 : 36|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Active : 37|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1Right_Depart : 48|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1Right_Depart_Front : 49|1@1+ (1,0) [0|1] "" XXX
SG_ Sig2Right_Depart : 50|1@1+ (1,0) [0|1] "" XXX
SG_ Left_Depart_Front : 51|1@1+ (1,0) [0|1] "" XXX
SG_ Sig3All_Depart : 52|1@1+ (1,0) [0|1] "" XXX
BO_ 604 BSD_RCTA: 8 XXX
SG_ Counter : 0|3@1+ (1,0) [0|7] "" XXX
SG_ State : 5|1@1+ (1,0) [0|1] "" XXX
SG_ R_ADJACENT : 32|1@1+ (1,0) [0|1] "" XXX
SG_ L_ADJACENT : 33|1@1+ (1,0) [0|1] "" XXX
SG_ R_APPROACHING : 42|1@1+ (1,0) [0|1] "" XXX
SG_ L_APPROACHING : 43|1@1+ (1,0) [0|1] "" XXX
SG_ R_RCTA : 46|1@1+ (1,0) [0|1] "" XXX
SG_ L_RCTA : 47|1@1+ (1,0) [0|1] "" XXX
BO_ 642 Dashlights: 8 XXX
SG_ Counter : 12|4@1+ (1,0) [0|15] "" XXX
SG_ SEATBELT_FL : 40|1@1+ (1,0) [0|1] "" XXX
SG_ LEFT_BLINKER : 44|1@1+ (1,0) [0|1] "" XXX
SG_ RIGHT_BLINKER : 45|1@1+ (1,0) [0|1] "" XXX
BO_ 880 Steering_Torque_2: 8 XXX
SG_ Steering_Voltage_Flat : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Steer_Torque_Sensor : 29|11@1- (-1,0) [-1000|1000] "" XXX
SG_ Counter : 40|4@1+ (1,0) [0|15] "" XXX
BO_ 884 BodyInfo: 8 XXX
SG_ DOOR_OPEN_FR : 24|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FL : 25|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RL : 26|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RR : 27|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_Hatch : 28|1@1+ (1,0) [0|1] "" XXX
BO_ 864 Engine_Temp: 8 XXX
SG_ Oil_Temp : 16|8@1+ (1,-40) [0|255] "" XXX
SG_ Coolant_Temp : 24|8@1+ (1,-40) [0|255] "" XXX
SG_ Cruise_Activated : 45|1@1+ (1,0) [0|1] "" XXX
SG_ Saved_Speed : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 866 Fuel: 8 XXX
BO_ 1745 Dash_State: 8 XXX
SG_ Units : 15|1@1+ (1,0) [0|1] "" XXX
CM_ SG_ 320 Off_Throttle_2 "Less sensitive";
CM_ SG_ 320 Throttle_Body "Throttle related";
CM_ SG_ 328 Gear "15 = P, 14 = R, 0 = N, 1-6=gear";
CM_ SG_ 328 Gear_2 "15 = P, 14 = R, 0 = N, 1-6=gear";
CM_ SG_ 353 Button "1 = main, 2 = set shallow, 3 = set deep, 4 = resume shallow, 5 resume deep";
CM_ SG_ 354 RPM "20hz version of Transmission_Engine under Transmission";
CM_ SG_ 359 Sig1Right_Depart "right depart, hill steep and seatbelt disengage";
CM_ SG_ 359 LKAS_Inactive_2017 "1 when not steering, 0 when lkas steering";
CM_ SG_ 359 Sig1Right_Depart_Front "object in front, right depart, hill steep and seatbelt disengage alert ";
CM_ SG_ 359 Left_Depart_Front "warning after acceleration into car in front and left depart";
CM_ SG_ 359 Sig1All_Depart "Left and right depart";
CM_ SG_ 359 Sig2All_Depart "Left and right depart";
CM_ SG_ 359 All_depart_2015 "always 1 on 2017";
CM_ SG_ 604 R_APPROACHING "Faster car approaching in far right lane";
CM_ SG_ 604 L_APPROACHING "Faster car approaching in far left lane";
CM_ SG_ 604 R_RCTA "Rear cross traffic alert, only when in R gear";
CM_ SG_ 604 L_RCTA "Rear cross traffic alert, only when in R gear";
CM_ SG_ 642 Counter "Affected by signals";
CM_ SG_ 642 SEATBELT_FL "Driver seatbelt";
CM_ SG_ 880 Steering_Voltage_Flat "receives later than 371";
VAL_ 328 Gear 0 "N" 1 "D" 2 "D" 3 "D" 4 "D" 5 "D" 6 "D" 14 "R" 15 "P";
VAL_ 1745 Units 0 "Metric" 1 "Imperial";
CM_ "subaru_forester_2017.dbc starts here"
BO_ 355 ES_DashStatus: 8 XXX
SG_ Not_Ready_Startup : 4|2@1+ (1,0) [0|3] "" XXX
SG_ Cruise_On : 16|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Set_Speed : 24|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 40|3@1+ (1,0) [0|7] "" XXX
SG_ Cruise_Activated : 54|1@1+ (1,0) [0|1] "" XXX
BO_ 881 Steering_Torque: 8 XXX
SG_ Steering_Motor_Flat : 0|10@1+ (32,0) [0|1000] "" XXX
SG_ Steer_Torque_Output : 16|11@1- (-32,0) [-1000|1000] "" XXX
SG_ LKA_Lockout : 27|1@1+ (1,0) [0|1] "" XXX
SG_ Steer_Torque_Sensor : 29|11@1- (-1,0) [-1000|1000] "" XXX
SG_ Steering_Angle : 40|16@1- (-0.033,0) [-600|600] "" XXX

View File

@@ -1,209 +0,0 @@
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX X
BO_ 2 Steering: 8 XXX
SG_ Steering_Angle : 7|16@0- (0.1,0) [0|65535] "" XXX
SG_ Counter : 25|3@1+ (1,0) [0|7] "" XXX
SG_ CHECKSUM : 32|8@1+ (1,0) [0|255] "" XXX
BO_ 64 Throttle: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|255] "" XXX
SG_ Engine_RPM : 16|12@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Pedal : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Cruise : 40|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Combo : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Off_Accel : 60|4@1+ (1,0) [0|7] "" XXX
BO_ 72 Transmission: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Gear : 24|8@1+ (1,0) [0|255] "" XXX
BO_ 326 Cruise_Buttons: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|30@1+ (1,0) [0|1073741823] "" XXX
SG_ Main : 42|1@1+ (1,0) [0|1] "" XXX
SG_ set : 43|1@1+ (1,0) [0|1] "" XXX
SG_ Resume : 44|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 45|19@1+ (1,0) [0|524287] "" XXX
BO_ 315 G_Sensor: 8 XXX
SG_ Lateral : 48|8@1- (-0.1,0) [0|255] "m/s2" XXX
SG_ Longitudinal : 56|8@1- (-0.1,0) [0|255] "m/s2" XXX
BO_ 314 Wheel_Speeds: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ FR : 12|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ RR : 25|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ FL : 51|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ RL : 38|13@1+ (0.057,0) [0|255] "kph" XXX
BO_ 281 Steering_Torque: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|3] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Steer_Error_1 : 12|1@0+ (1,0) [0|1] "" XXX
SG_ Steer_Torque_Sensor : 16|11@1- (-1,0) [0|3] "" XXX
SG_ Steer_Error_2 : 28|1@1+ (1,0) [0|1] "" XXX
SG_ Steer_Warning : 29|1@1+ (1,0) [0|1] "" XXX
SG_ Steering_Angle : 32|16@1- (-0.0217,0) [0|255] "" X
SG_ Steer_Torque_Output : 48|11@1- (-1,0) [0|31] "" XXX
BO_ 312 Brake_Pressure_L_R: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|31] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|3] "" XXX
SG_ Brake_1 : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_2 : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 313 Brake_Pedal: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Brake_Pedal_On : 34|1@1+ (1,0) [0|7] "" XXX
SG_ Brake_Pedal : 36|12@1+ (1,0) [0|65535] "" XXX
BO_ 290 ES_LKAS: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ SET_1 : 12|1@0+ (1,0) [0|3] "" XXX
SG_ LKAS_Output : 16|13@1- (-1,0) [0|3] "" XXX
SG_ LKAS_Request : 29|1@0+ (1,0) [0|3] "" XXX
BO_ 544 ES_Brake: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Brake_Pressure : 16|16@1+ (1,0) [0|255] "" XXX
SG_ __Status : 36|4@1+ (1,0) [0|63] "" XXX
BO_ 545 ES_Distance: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|20@1+ (1,0) [0|15] "" XXX
SG_ Signal2 : 32|24@1+ (1,0) [0|15] "" XXX
SG_ Main : 56|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 57|7@1+ (1,0) [0|1] "" XXX
BO_ 546 ES_Status: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ RPM : 16|12@1+ (1,0) [0|255] "" XXX
SG_ Cruise_Activated : 29|1@0+ (1,0) [0|3] "" XXX
SG_ Cruise_Brake : 30|1@1+ (1,0) [0|3] "" XXX
BO_ 576 CruiseControl: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Cruise_On : 40|1@1+ (1,0) [0|3] "" XXX
SG_ Cruise_Activated : 41|1@1+ (1,0) [0|3] "" XXX
BO_ 552 BSD_RCTA: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ R_ADJACENT : 48|1@1+ (1,0) [0|1] "" XXX
SG_ L_ADJACENT : 49|1@1+ (1,0) [0|1] "" XXX
SG_ R_APPROACHING : 58|1@1+ (1,0) [0|1] "" XXX
SG_ L_APPROACHING : 59|1@1+ (1,0) [0|1] "" XXX
BO_ 912 Dashlights: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ SEATBELT_FL : 48|1@1+ (1,0) [0|1] "" XXX
SG_ LEFT_BLINKER : 50|1@1+ (1,0) [0|3] "" XXX
SG_ RIGHT_BLINKER : 51|1@1+ (1,0) [0|1] "" XXX
BO_ 940 BodyInfo: 8 XXX
SG_ DOOR_OPEN_FL : 32|1@1+ (1,0) [0|255] "" XXX
SG_ DOOR_OPEN_FR : 33|1@1+ (1,0) [0|3] "" XXX
SG_ DOOR_OPEN_RL : 34|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RR : 35|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_TRUNK : 36|1@0+ (1,0) [0|1] "" XXX
SG_ DASH_BTN_LIGHTS : 56|1@0+ (1,0) [0|1] "" XXX
SG_ Lowbeam : 57|1@1+ (1,0) [0|3] "" XXX
SG_ Highbeam : 58|1@1+ (1,0) [0|1] "" XXX
SG_ FOG_LIGHTS2 : 60|1@1+ (1,0) [0|1] "" XXX
SG_ WIPERS : 62|1@0+ (1,0) [0|1] "" XXX
BO_ 801 ES_DashStatus: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|7] "" XXX
SG_ Cruise_Distance : 28|3@1+ (1,0) [0|3] "" XXX
SG_ Cruise_Disengaged : 35|1@1+ (1,0) [0|3] "" XXX
SG_ Cruise_Activated : 36|1@1+ (1,0) [0|3] "" XXX
SG_ Cruise_Set_Speed : 40|8@1+ (1,0) [0|255] "" XXX
SG_ Cruise_Fault : 48|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal : 51|1@1+ (1,0) [0|3] "" XXX
SG_ Car_Follow : 52|1@1+ (1,0) [0|3] "" XXX
SG_ Far_Distance : 56|4@1+ (1,0) [0|15] "" XXX
SG_ Cruise_State : 60|4@1+ (1,0) [0|15] "" XXX
BO_ 802 ES_LKAS_State: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Keep_Hands_On_Wheel : 12|1@1+ (1,0) [0|1] "" XXX
SG_ Empty_Box : 13|1@1+ (1,0) [0|1] "" XXX
SG_ Signal1 : 14|3@1+ (1,0) [0|7] "" XXX
SG_ LKAS_ACTIVE : 17|1@1+ (1,0) [0|3] "" XXX
SG_ Signal2 : 18|5@1+ (1,0) [0|7] "" XXX
SG_ Backward_Speed_Limit_Menu : 23|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_ENABLE_3 : 24|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 25|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_ENABLE_2 : 26|1@1+ (1,0) [0|1] "" XXX
SG_ Signal4 : 27|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Left_Line_Visible : 28|1@1+ (1,0) [0|1] "" XXX
SG_ Signal6 : 29|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Right_Line_Visible : 30|1@1+ (1,0) [0|1] "" XXX
SG_ Signal7 : 31|1@1+ (1,0) [0|1] "" XXX
SG_ FCW_Cont_Beep : 32|1@1+ (1,0) [0|1] "" XXX
SG_ FCW_Repeated_Beep : 33|1@1+ (1,0) [0|1] "" XXX
SG_ Throttle_Management_Activated : 34|1@1+ (1,0) [0|1] "" XXX
SG_ Traffic_light_Ahead : 35|1@1+ (1,0) [0|1] "" XXX
SG_ Right_Depart : 36|1@1+ (1,0) [0|3] "" XXX
SG_ Signal5 : 37|27@1+ (1,0) [0|1] "" XXX
BO_ 1677 Dash_State: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Units : 29|3@1+ (1,0) [0|7] "" XXX
CM_ SG_ 801 Cruise_State "0 = Normal, 3 = Hold";
CM_ SG_ 802 Traffic_light_Ahead "Crosstrek 2018 = car in front has moved";
CM_ SG_ 940 FOG_LIGHTS2 "yellow fog light in the dash";
CM_ SG_ 940 Highbeam "01 = low beam, 11 = high beam";
CM_ SG_ 1677 Units "1 = imperial, 6 = metric";
VAL_ 72 Gear 2 "N" 3 "R" 4 "P" 121 "D" 137 "1" 145 "2" 153 "3" 161 "4" 169 "5" 177 "6";

View File

@@ -0,0 +1,306 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT"
CM_ "Imported file _subaru_global.dbc starts here"
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX X
BO_ 2 Steering: 8 XXX
SG_ Steering_Angle : 7|16@0- (0.1,0) [0|65535] "" XXX
SG_ Counter : 25|3@1+ (1,0) [0|7] "" XXX
SG_ CHECKSUM : 32|8@1+ (1,0) [0|255] "" XXX
BO_ 64 Throttle: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Engine_RPM : 16|12@1+ (1,0) [0|4095] "" XXX
SG_ Throttle_Pedal : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Cruise : 40|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Combo : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Signal1 : 56|4@1+ (1,0) [0|15] "" XXX
SG_ Off_Accel : 60|4@1+ (1,0) [0|15] "" XXX
BO_ 316 Brake_Status: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|46@1+ (1,0) [0|1] "" XXX
SG_ ES_Brake : 58|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 59|3@1+ (1,0) [0|1] "" XXX
SG_ Brake : 62|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 63|1@1+ (1,0) [0|1] "" XXX
BO_ 326 Cruise_Buttons: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|30@1+ (1,0) [0|1073741823] "" XXX
SG_ Main : 42|1@1+ (1,0) [0|1] "" XXX
SG_ Set : 43|1@1+ (1,0) [0|1] "" XXX
SG_ Resume : 44|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 45|19@1+ (1,0) [0|524287] "" XXX
BO_ 315 G_Sensor: 8 XXX
SG_ Lateral : 48|8@1- (-0.1,0) [0|255] "m/s2" XXX
SG_ Longitudinal : 56|8@1- (-0.1,0) [0|255] "m/s2" XXX
BO_ 314 Wheel_Speeds: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ FR : 12|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ RR : 25|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ FL : 51|13@1+ (0.057,0) [0|255] "kph" XXX
SG_ RL : 38|13@1+ (0.057,0) [0|255] "kph" XXX
BO_ 280 STOP_START: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ State : 63|1@1+ (1,0) [0|1] "" XXX
BO_ 281 Steering_Torque: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Steer_Error_1 : 12|1@0+ (1,0) [0|1] "" XXX
SG_ Steer_Torque_Sensor : 16|11@1- (-1,0) [-1000|1000] "" XXX
SG_ Steer_Error_2 : 28|1@1+ (1,0) [0|1] "" XXX
SG_ Steer_Warning : 29|1@1+ (1,0) [0|1] "" XXX
SG_ Steering_Angle : 32|16@1- (-0.0217,0) [-600|600] "" X
SG_ Steer_Torque_Output : 48|11@1- (-1,0) [-1000|1000] "" XXX
BO_ 312 Brake_Pressure_L_R: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Brake_1 : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_2 : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 313 Brake_Pedal: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|4@1+ (1,0) [0|15] "" XXX
SG_ Speed : 16|12@1+ (0.05625,0) [0|255] "kph" XXX
SG_ Signal2 : 28|6@1+ (1,0) [0|63] "" XXX
SG_ Brake_Lights : 34|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 35|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal : 36|12@1+ (1,0) [0|4095] "" XXX
SG_ Signal4 : 48|16@1+ (1,0) [0|65535] "" XXX
BO_ 290 ES_LKAS: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ SET_1 : 12|1@0+ (1,0) [0|1] "" XXX
SG_ LKAS_Output : 16|13@1- (-1,0) [-8191|8191] "" XXX
SG_ LKAS_Request : 29|1@0+ (1,0) [0|1] "" XXX
BO_ 544 ES_Brake: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|4@1+ (1,0) [0|15] "" XXX
SG_ Brake_Pressure : 16|16@1+ (1,0) [0|65535] "" XXX
SG_ Signal2 : 32|4@1+ (1,0) [0|15] "" XXX
SG_ Cruise_Brake_Lights : 36|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Brake_Fault : 37|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Brake_Active : 38|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 39|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 40|24@1+ (1,0) [0|16777215] "" XXX
BO_ 577 Cruise_Status: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Cruise_On : 54|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 55|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Active : 57|4@1+ (1,0) [0|15] "" XXX
BO_ 552 BSD_RCTA: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ R_ADJACENT : 48|1@1+ (1,0) [0|1] "" XXX
SG_ L_ADJACENT : 49|1@1+ (1,0) [0|1] "" XXX
SG_ R_APPROACHING : 58|1@1+ (1,0) [0|1] "" XXX
SG_ L_APPROACHING : 59|1@1+ (1,0) [0|1] "" XXX
BO_ 912 Dashlights: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ ICY_ROAD : 32|2@1+ (1,0) [0|3] "" XXX
SG_ SEATBELT_FL : 48|1@1+ (1,0) [0|1] "" XXX
SG_ LEFT_BLINKER : 50|1@1+ (1,0) [0|1] "" XXX
SG_ RIGHT_BLINKER : 51|1@1+ (1,0) [0|1] "" XXX
BO_ 940 BodyInfo: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ DOOR_OPEN_FL : 32|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FR : 33|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RL : 34|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RR : 35|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_TRUNK : 36|1@0+ (1,0) [0|1] "" XXX
SG_ DASH_BTN_LIGHTS : 56|1@0+ (1,0) [0|1] "" XXX
SG_ Lowbeam : 57|1@1+ (1,0) [0|1] "" XXX
SG_ Highbeam : 58|1@1+ (1,0) [0|1] "" XXX
SG_ FOG_LIGHTS2 : 60|1@1+ (1,0) [0|1] "" XXX
SG_ WIPERS : 62|1@0+ (1,0) [0|1] "" XXX
SG_ BRAKE : 54|1@1+ (1,0) [0|1] "" XXX
BO_ 801 ES_DashStatus: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ PCB_Off : 12|1@1+ (1,0) [0|1] "" XXX
SG_ LDW_Off : 13|1@1+ (1,0) [0|1] "" XXX
SG_ Signal1 : 14|10@1+ (1,0) [0|1023] "" XXX
SG_ Cruise_Soft_Disable : 24|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 25|3@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Distance : 28|3@1+ (1,0) [0|7] "" XXX
SG_ Signal3 : 31|1@1+ (1,0) [0|1] "" XXX
SG_ Conventional_Cruise : 32|1@1+ (1,0) [0|1] "" XXX
SG_ Signal4 : 33|2@1+ (1,0) [0|3] "" XXX
SG_ Cruise_Disengaged : 35|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 36|1@1+ (1,0) [0|1] "" XXX
SG_ Signal5 : 37|3@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Set_Speed : 40|8@1+ (1,0) [0|255] "" XXX
SG_ Cruise_Fault : 48|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_On : 49|1@1+ (1,0) [0|1] "" XXX
SG_ Signal6 : 50|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Lights : 51|1@1+ (1,0) [0|1] "" XXX
SG_ Car_Follow : 52|1@1+ (1,0) [0|1] "" XXX
SG_ Signal7 : 53|3@1+ (1,0) [0|1] "" XXX
SG_ Far_Distance : 56|4@1+ (1,0) [0|15] "" XXX
SG_ Cruise_State : 60|4@1+ (1,0) [0|15] "" XXX
BO_ 802 ES_LKAS_State: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Keep_Hands_On_Wheel : 12|1@1+ (1,0) [0|1] "" XXX
SG_ Empty_Box : 13|1@1+ (1,0) [0|1] "" XXX
SG_ Signal1 : 14|3@1+ (1,0) [0|7] "" XXX
SG_ LKAS_ACTIVE : 17|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 18|5@1+ (1,0) [0|31] "" XXX
SG_ Backward_Speed_Limit_Menu : 23|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_ENABLE_3 : 24|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Left_Line_Light_Blink : 25|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_ENABLE_2 : 26|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Right_Line_Light_Blink : 27|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Left_Line_Visible : 28|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Left_Line_Green : 29|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Right_Line_Visible : 30|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Right_Line_Green : 31|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Alert : 32|4@1+ (1,0) [0|15] "" XXX
SG_ Signal3 : 36|28@1+ (1,0) [0|1] "" XXX
BO_ 722 AC_State: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ AC_Mode : 37|3@1+ (1,0) [0|1] "" XXX
SG_ AC_ON : 24|2@1+ (1,0) [0|1] "" XXX
BO_ 1677 Dash_State: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Units : 29|3@1+ (1,0) [0|7] "" XXX
CM_ SG_ 64 Throttle_Combo "Throttle Cruise + Pedal";
CM_ SG_ 313 Brake_Lights "Driver or Cruise Brake on";
CM_ SG_ 544 Cruise_Brake_Lights "1 = switch on brake lights";
CM_ SG_ 801 PCB_Off "Pre-Collision Braking off";
CM_ SG_ 801 Brake_Lights "Driver or Cruise brake on";
CM_ SG_ 801 Cruise_State "0 = Normal, 1 = Hold+User Brake, 2 = Ready, 3 = Hold";
CM_ SG_ 801 Far_Distance "1=0-5m, 2=5-10m, 3=10-15m, 4=15-20m, 5=20-25m, 6=25-30m, 7=30-35m, 8=35-40m, 9=40-45m, 10=45-50m, 11=50-55m, 12=55-60m, 13=60-65m, 14=65-70m, 15=75m+";
CM_ SG_ 801 Cruise_Soft_Disable "Eyesight soft disable (eg direct sunlight)";
CM_ SG_ 802 LKAS_Alert "1 = FCW_Cont_Beep, 2 = FCW_Repeated_Beep, 3 = Throttle_Management_Activated_Warning, 4 = Throttle_Management_Activated_Alert, 8 = Traffic_Light_Ahead, 9 = Apply_Brake_to_Hold Position, 11 = LDW_Right, 12 = LDW_Left, 13 = Stay_Alert, 14 = Lead_Vehicle_Start_Alert";
CM_ SG_ 912 ICY_ROAD "1 = DASHLIGHT ON, 2 = WARNING, 3 = OFF";
CM_ SG_ 940 Highbeam "01 = low beam, 11 = high beam";
CM_ SG_ 940 FOG_LIGHTS2 "yellow fog light in the dash";
CM_ SG_ 1677 Units "AU/EU: 1 = imperial, 3 = metric US: 3 = imperial, 4 = metric";
CM_ "subaru_global_2017.dbc starts here"
BO_ 72 Transmission: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Gear : 24|8@1+ (1,0) [0|255] "" XXX
SG_ RPM : 40|16@1+ (1,0) [0|65535] "" XXX
BO_ 73 CVT: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ CVT_Gear : 24|8@1+ (1,0) [0|255] "" XXX
BO_ 545 ES_Distance: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|3@1+ (1,0) [0|7] "" XXX
SG_ Cruise_Fault : 15|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Throttle : 16|12@1+ (1,0) [0|4095] "" XXX
SG_ Signal2 : 28|4@1+ (1,0) [0|15] "" XXX
SG_ Car_Follow : 32|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 33|3@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Brake_Active : 36|1@1+ (1,0) [0|1] "" XXX
SG_ Distance_Swap : 37|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_EPB : 38|1@1+ (1,0) [0|1] "" XXX
SG_ Signal4 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ Close_Distance : 40|8@1+ (1,0) [0|1] "" XXX
SG_ Signal5 : 48|8@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Cancel : 56|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Set : 57|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Resume : 58|1@1+ (1,0) [0|1] "" XXX
SG_ Signal6 : 59|5@1+ (1,0) [0|1] "" XXX
BO_ 546 ES_Status: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|3@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Fault : 15|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_RPM : 16|12@1+ (1,0) [0|4095] "" XXX
SG_ Signal2 : 28|1@0+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 29|1@0+ (1,0) [0|1] "" XXX
SG_ Brake_Lights : 30|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Hold : 31|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 32|32@1+ (1,0) [0|1] "" XXX
BO_ 576 CruiseControl: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Signal1 : 12|28@1+ (1,0) [0|268435455] "" XXX
SG_ Cruise_On : 40|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 41|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 42|22@1+ (1,0) [0|4194303] "" XXX
CM_ SG_ 545 Cruise_Throttle "RPM-like output signal";
CM_ SG_ 545 Cruise_EPB "1 = Electric Parking Brake set";
CM_ SG_ 545 Distance_Swap "Switch from Close to Far distance";
CM_ SG_ 546 Cruise_RPM "ES RPM output for ECM and TCM";
CM_ SG_ 546 Signal3 "0 when cruise_activated = 1";
VAL_ 72 Gear 2 "N" 3 "R" 4 "P" 121 "D" 137 "1" 145 "2" 153 "3" 161 "4" 169 "5" 177 "6";

View File

@@ -0,0 +1,273 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT"
CM_ "Imported file _subaru_preglobal_2015.dbc starts here"
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX X
BO_ 2 Steering: 8 XXX
SG_ Steering_Angle : 7|16@0- (0.1,0) [-500|500] "degree" XXX
SG_ Counter : 27|3@0+ (1,0) [0|7] "" XXX
SG_ Checksum : 39|8@0+ (1,0) [0|255] "" XXX
BO_ 208 G_Sensor: 8 XXX
SG_ Steering_Angle : 0|16@1- (-0.1,0) [-500|500] "" XXX
SG_ Lateral : 16|16@1- (-0.0035,1) [-255|255] "" XXX
SG_ Longitudinal : 48|16@1- (-0.00035,0) [-255|255] "" XXX
BO_ 209 Brake_Pedal: 8 XXX
SG_ Speed : 0|16@1+ (0.05625,0) [0|255] "KPH" XXX
SG_ Brake_Pedal : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 210 Brake_2: 8 XXX
SG_ Brake_Light : 35|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Related : 36|1@1+ (1,0) [0|1] "" XXX
SG_ Right_Brake : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Left_Brake : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 211 Brake_Type: 8 XXX
SG_ Brake_Light : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Speed_Counter : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_Cruise_On : 42|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal_On : 46|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 48|8@1+ (1,0) [0|255] "" XXX
BO_ 212 Wheel_Speeds: 8 XXX
SG_ FL : 0|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ FR : 16|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ RL : 32|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ RR : 48|16@1+ (0.0592,0) [0|255] "KPH" XXX
BO_ 320 Throttle: 8 XXX
SG_ Throttle_Pedal : 0|8@1+ (0.392157,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Not_Full_Throttle : 14|1@1+ (1,0) [0|1] "" XXX
SG_ Engine_RPM : 16|14@1+ (1,0) [0|32767] "" XXX
SG_ Off_Throttle : 30|1@1+ (1,0) [0|1] "" XXX
SG_ Throttle_Cruise : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Combo : 40|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Body : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Off_Throttle_2 : 56|1@1+ (1,0) [0|1] "" XXX
BO_ 321 Engine: 8 XXX
SG_ Engine_Torque : 0|15@1+ (1,0) [0|255] "" XXX
SG_ Engine_Stop : 15|1@1+ (1,0) [0|1] "" XXX
SG_ Wheel_Torque : 16|12@1+ (1,0) [0|4095] "" XXX
SG_ Engine_RPM : 32|12@1+ (1,0) [0|8191] "" XXX
BO_ 324 CruiseControl: 8 XXX
SG_ OnOffButton : 2|1@1+ (1,0) [0|1] "" XXX
SG_ SET_BUTTON : 3|1@1+ (1,0) [0|1] "" XXX
SG_ RES_BUTTON : 4|1@1+ (1,0) [0|1] "" XXX
SG_ Button : 13|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_On : 48|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 49|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal_On : 51|1@1+ (1,0) [0|1] "" XXX
BO_ 328 Transmission: 8 XXX
SG_ Manual_Gear : 4|4@1+ (1,0) [0|15] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Transmission_Engine : 16|15@1+ (1,0) [0|65535] "" XXX
SG_ Gear : 48|4@1+ (1,0) [0|15] "" XXX
SG_ Gear_2 : 52|4@1+ (1,0) [0|15] "" XXX
SG_ Paddle_Shift : 60|2@1+ (1,0) [0|3] "" XXX
BO_ 329 CVT_Ratio: 8 XXX
BO_ 336 Brake_Pressure: 8 XXX
SG_ Brake_Pressure_Right : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_Pressure_Left : 8|8@1+ (1,0) [0|255] "" XXX
BO_ 338 Stalk: 8 XXX
SG_ Counter : 12|4@1+ (1,0) [0|15] "" XXX
SG_ Brake_Light : 52|1@1+ (1,0) [0|1] "" XXX
SG_ Runlights : 58|1@1+ (1,0) [0|1] "" XXX
SG_ Headlights : 59|1@1+ (1,0) [0|1] "" XXX
SG_ Highbeam : 60|1@1+ (1,0) [0|1] "" XXX
SG_ Wiper : 62|1@1+ (1,0) [0|1] "" XXX
BO_ 352 ES_Brake: 8 XXX
SG_ Brake_Pressure : 0|16@1+ (1,0) [0|255] "" XXX
SG_ Brake_Light : 20|1@1+ (1,0) [0|1] "" XXX
SG_ ES_Error : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_On : 22|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 23|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 48|3@1+ (1,0) [0|7] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 353 ES_CruiseThrottle: 8 XXX
SG_ Throttle_Cruise : 0|12@1+ (1,0) [0|4095] "" XXX
SG_ Signal1 : 12|4@1+ (1,0) [0|15] "" XXX
SG_ Cruise_Activated : 16|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 17|3@1+ (1,0) [0|7] "" XXX
SG_ Brake_On : 20|1@1+ (1,0) [0|1] "" XXX
SG_ DistanceSwap : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Standstill : 22|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 23|1@1+ (1,0) [0|1] "" XXX
SG_ CloseDistance : 24|8@1+ (0.0196,0) [0|255] "m" XXX
SG_ Signal4 : 32|9@1+ (1,0) [0|255] "" XXX
SG_ Standstill_2 : 41|1@1+ (1,0) [0|1] "" XXX
SG_ ES_Error : 42|1@1+ (1,0) [0|1] "" XXX
SG_ Signal5 : 43|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 44|3@1+ (1,0) [0|7] "" XXX
SG_ Signal6 : 47|1@1+ (1,0) [0|1] "" XXX
SG_ Button : 48|3@1+ (1,0) [0|7] "" XXX
SG_ Signal7 : 51|5@1+ (1,0) [0|31] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 354 ES_RPM: 8 XXX
SG_ Brake : 8|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 9|1@1+ (1,0) [0|1] "" XXX
SG_ RPM : 16|16@1+ (1,0) [0|65535] "" XXX
SG_ Checksum : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 48|3@1+ (1,0) [0|7] "" XXX
BO_ 356 ES_LKAS: 8 XXX
SG_ Counter : 0|3@1+ (1,0) [0|7] "" XXX
SG_ LKAS_Command : 8|13@1- (-1,0) [-4096|4096] "" XXX
SG_ LKAS_Active : 24|1@1+ (1,0) [0|1] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 359 ES_LDW: 8 XXX
SG_ All_depart_2015 : 0|1@1+ (1,0) [0|1] "" XXX
SG_ Right_Line_2017 : 24|1@1+ (1,0) [0|1] "" XXX
SG_ Left_Line_2017 : 25|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1All_Depart : 28|1@1+ (1,0) [0|1] "" XXX
SG_ Sig2All_Depart : 31|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Inactive_2017 : 36|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Active : 37|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1Right_Depart : 48|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1Right_Depart_Front : 49|1@1+ (1,0) [0|1] "" XXX
SG_ Sig2Right_Depart : 50|1@1+ (1,0) [0|1] "" XXX
SG_ Left_Depart_Front : 51|1@1+ (1,0) [0|1] "" XXX
SG_ Sig3All_Depart : 52|1@1+ (1,0) [0|1] "" XXX
BO_ 604 BSD_RCTA: 8 XXX
SG_ Counter : 0|3@1+ (1,0) [0|7] "" XXX
SG_ State : 5|1@1+ (1,0) [0|1] "" XXX
SG_ R_ADJACENT : 32|1@1+ (1,0) [0|1] "" XXX
SG_ L_ADJACENT : 33|1@1+ (1,0) [0|1] "" XXX
SG_ R_APPROACHING : 42|1@1+ (1,0) [0|1] "" XXX
SG_ L_APPROACHING : 43|1@1+ (1,0) [0|1] "" XXX
SG_ R_RCTA : 46|1@1+ (1,0) [0|1] "" XXX
SG_ L_RCTA : 47|1@1+ (1,0) [0|1] "" XXX
BO_ 642 Dashlights: 8 XXX
SG_ Counter : 12|4@1+ (1,0) [0|15] "" XXX
SG_ SEATBELT_FL : 40|1@1+ (1,0) [0|1] "" XXX
SG_ LEFT_BLINKER : 44|1@1+ (1,0) [0|1] "" XXX
SG_ RIGHT_BLINKER : 45|1@1+ (1,0) [0|1] "" XXX
BO_ 880 Steering_Torque_2: 8 XXX
SG_ Steering_Voltage_Flat : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Steer_Torque_Sensor : 29|11@1- (-1,0) [-1000|1000] "" XXX
SG_ Counter : 40|4@1+ (1,0) [0|15] "" XXX
BO_ 884 BodyInfo: 8 XXX
SG_ DOOR_OPEN_FR : 24|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FL : 25|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RL : 26|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RR : 27|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_Hatch : 28|1@1+ (1,0) [0|1] "" XXX
BO_ 864 Engine_Temp: 8 XXX
SG_ Oil_Temp : 16|8@1+ (1,-40) [0|255] "" XXX
SG_ Coolant_Temp : 24|8@1+ (1,-40) [0|255] "" XXX
SG_ Cruise_Activated : 45|1@1+ (1,0) [0|1] "" XXX
SG_ Saved_Speed : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 866 Fuel: 8 XXX
BO_ 1745 Dash_State: 8 XXX
SG_ Units : 15|1@1+ (1,0) [0|1] "" XXX
CM_ SG_ 320 Off_Throttle_2 "Less sensitive";
CM_ SG_ 320 Throttle_Body "Throttle related";
CM_ SG_ 328 Gear "15 = P, 14 = R, 0 = N, 1-6=gear";
CM_ SG_ 328 Gear_2 "15 = P, 14 = R, 0 = N, 1-6=gear";
CM_ SG_ 353 Button "1 = main, 2 = set shallow, 3 = set deep, 4 = resume shallow, 5 resume deep";
CM_ SG_ 354 RPM "20hz version of Transmission_Engine under Transmission";
CM_ SG_ 359 Sig1Right_Depart "right depart, hill steep and seatbelt disengage";
CM_ SG_ 359 LKAS_Inactive_2017 "1 when not steering, 0 when lkas steering";
CM_ SG_ 359 Sig1Right_Depart_Front "object in front, right depart, hill steep and seatbelt disengage alert ";
CM_ SG_ 359 Left_Depart_Front "warning after acceleration into car in front and left depart";
CM_ SG_ 359 Sig1All_Depart "Left and right depart";
CM_ SG_ 359 Sig2All_Depart "Left and right depart";
CM_ SG_ 359 All_depart_2015 "always 1 on 2017";
CM_ SG_ 604 R_APPROACHING "Faster car approaching in far right lane";
CM_ SG_ 604 L_APPROACHING "Faster car approaching in far left lane";
CM_ SG_ 604 R_RCTA "Rear cross traffic alert, only when in R gear";
CM_ SG_ 604 L_RCTA "Rear cross traffic alert, only when in R gear";
CM_ SG_ 642 Counter "Affected by signals";
CM_ SG_ 642 SEATBELT_FL "Driver seatbelt";
CM_ SG_ 880 Steering_Voltage_Flat "receives later than 371";
VAL_ 328 Gear 0 "N" 1 "D" 2 "D" 3 "D" 4 "D" 5 "D" 6 "D" 14 "R" 15 "P";
VAL_ 1745 Units 0 "Metric" 1 "Imperial";
CM_ "subaru_outback_2015.dbc starts here"
BO_ 358 ES_DashStatus: 8 XXX
SG_ Not_Ready_Startup : 0|3@1+ (1,0) [0|7] "" XXX
SG_ Seatbelt_Disengage : 12|2@1+ (1,0) [0|3] "" XXX
SG_ Disengage_Alert : 14|2@1+ (1,0) [0|3] "" XXX
SG_ Cruise_On : 16|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 17|1@1+ (1,0) [0|1] "" XXX
SG_ Signal1 : 18|1@1+ (1,0) [0|1] "" XXX
SG_ WHEELS_MOVING_2015 : 19|1@1+ (1,0) [0|1] "" XXX
SG_ Driver_Input : 20|1@1+ (1,0) [0|1] "" XXX
SG_ Distance_Bars : 21|3@1+ (1,0) [0|7] "" XXX
SG_ Cruise_Set_Speed : 24|8@1+ (1,0) [0|255] "" XXX
SG_ ES_Error : 32|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_On_2 : 34|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 37|3@1+ (1,0) [0|7] "" XXX
SG_ Steep_Hill_Disengage : 44|1@1+ (1,0) [0|3] "" XXX
SG_ Lead_Car : 46|1@1+ (1,0) [0|1] "" XXX
SG_ Obstacle_Distance : 48|4@1+ (5,0) [0|15] "m" XXX
BO_ 881 Steering_Torque: 8 XXX
SG_ Steering_Motor_Flat : 0|10@1+ (32,0) [0|1000] "" XXX
SG_ Steer_Torque_Output : 16|11@1- (-32,0) [-1000|1000] "" XXX
SG_ LKA_Lockout : 27|1@1+ (1,0) [0|1] "" XXX
SG_ Steer_Torque_Sensor : 29|11@1- (1,0) [-1000|1000] "" XXX
SG_ Steering_Angle : 40|16@1- (-0.033,0) [-600|600] "" XXX
CM_ SG_ 358 Disengage_Alert "seatbelt and steep hill disengage";
CM_ SG_ 358 ES_Error "No engagement until restart";
CM_ SG_ 358 Lead_Car "front car detected";

View File

@@ -0,0 +1,273 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT"
CM_ "Imported file _subaru_preglobal_2015.dbc starts here"
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX X
BO_ 2 Steering: 8 XXX
SG_ Steering_Angle : 7|16@0- (0.1,0) [-500|500] "degree" XXX
SG_ Counter : 27|3@0+ (1,0) [0|7] "" XXX
SG_ Checksum : 39|8@0+ (1,0) [0|255] "" XXX
BO_ 208 G_Sensor: 8 XXX
SG_ Steering_Angle : 0|16@1- (-0.1,0) [-500|500] "" XXX
SG_ Lateral : 16|16@1- (-0.0035,1) [-255|255] "" XXX
SG_ Longitudinal : 48|16@1- (-0.00035,0) [-255|255] "" XXX
BO_ 209 Brake_Pedal: 8 XXX
SG_ Speed : 0|16@1+ (0.05625,0) [0|255] "KPH" XXX
SG_ Brake_Pedal : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 210 Brake_2: 8 XXX
SG_ Brake_Light : 35|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Related : 36|1@1+ (1,0) [0|1] "" XXX
SG_ Right_Brake : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Left_Brake : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 211 Brake_Type: 8 XXX
SG_ Brake_Light : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Speed_Counter : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_Cruise_On : 42|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal_On : 46|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 48|8@1+ (1,0) [0|255] "" XXX
BO_ 212 Wheel_Speeds: 8 XXX
SG_ FL : 0|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ FR : 16|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ RL : 32|16@1+ (0.0592,0) [0|255] "KPH" XXX
SG_ RR : 48|16@1+ (0.0592,0) [0|255] "KPH" XXX
BO_ 320 Throttle: 8 XXX
SG_ Throttle_Pedal : 0|8@1+ (0.392157,0) [0|255] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Not_Full_Throttle : 14|1@1+ (1,0) [0|1] "" XXX
SG_ Engine_RPM : 16|14@1+ (1,0) [0|32767] "" XXX
SG_ Off_Throttle : 30|1@1+ (1,0) [0|1] "" XXX
SG_ Throttle_Cruise : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Combo : 40|8@1+ (1,0) [0|255] "" XXX
SG_ Throttle_Body : 48|8@1+ (1,0) [0|255] "" XXX
SG_ Off_Throttle_2 : 56|1@1+ (1,0) [0|1] "" XXX
BO_ 321 Engine: 8 XXX
SG_ Engine_Torque : 0|15@1+ (1,0) [0|255] "" XXX
SG_ Engine_Stop : 15|1@1+ (1,0) [0|1] "" XXX
SG_ Wheel_Torque : 16|12@1+ (1,0) [0|4095] "" XXX
SG_ Engine_RPM : 32|12@1+ (1,0) [0|8191] "" XXX
BO_ 324 CruiseControl: 8 XXX
SG_ OnOffButton : 2|1@1+ (1,0) [0|1] "" XXX
SG_ SET_BUTTON : 3|1@1+ (1,0) [0|1] "" XXX
SG_ RES_BUTTON : 4|1@1+ (1,0) [0|1] "" XXX
SG_ Button : 13|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_On : 48|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 49|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_Pedal_On : 51|1@1+ (1,0) [0|1] "" XXX
BO_ 328 Transmission: 8 XXX
SG_ Manual_Gear : 4|4@1+ (1,0) [0|15] "" XXX
SG_ Counter : 8|4@1+ (1,0) [0|15] "" XXX
SG_ Transmission_Engine : 16|15@1+ (1,0) [0|65535] "" XXX
SG_ Gear : 48|4@1+ (1,0) [0|15] "" XXX
SG_ Gear_2 : 52|4@1+ (1,0) [0|15] "" XXX
SG_ Paddle_Shift : 60|2@1+ (1,0) [0|3] "" XXX
BO_ 329 CVT_Ratio: 8 XXX
BO_ 336 Brake_Pressure: 8 XXX
SG_ Brake_Pressure_Right : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Brake_Pressure_Left : 8|8@1+ (1,0) [0|255] "" XXX
BO_ 338 Stalk: 8 XXX
SG_ Counter : 12|4@1+ (1,0) [0|15] "" XXX
SG_ Brake_Light : 52|1@1+ (1,0) [0|1] "" XXX
SG_ Runlights : 58|1@1+ (1,0) [0|1] "" XXX
SG_ Headlights : 59|1@1+ (1,0) [0|1] "" XXX
SG_ Highbeam : 60|1@1+ (1,0) [0|1] "" XXX
SG_ Wiper : 62|1@1+ (1,0) [0|1] "" XXX
BO_ 352 ES_Brake: 8 XXX
SG_ Brake_Pressure : 0|16@1+ (1,0) [0|255] "" XXX
SG_ Brake_Light : 20|1@1+ (1,0) [0|1] "" XXX
SG_ ES_Error : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Brake_On : 22|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 23|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 48|3@1+ (1,0) [0|7] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 353 ES_CruiseThrottle: 8 XXX
SG_ Throttle_Cruise : 0|12@1+ (1,0) [0|4095] "" XXX
SG_ Signal1 : 12|4@1+ (1,0) [0|15] "" XXX
SG_ Cruise_Activated : 16|1@1+ (1,0) [0|1] "" XXX
SG_ Signal2 : 17|3@1+ (1,0) [0|7] "" XXX
SG_ Brake_On : 20|1@1+ (1,0) [0|1] "" XXX
SG_ DistanceSwap : 21|1@1+ (1,0) [0|1] "" XXX
SG_ Standstill : 22|1@1+ (1,0) [0|1] "" XXX
SG_ Signal3 : 23|1@1+ (1,0) [0|1] "" XXX
SG_ CloseDistance : 24|8@1+ (0.0196,0) [0|255] "m" XXX
SG_ Signal4 : 32|9@1+ (1,0) [0|255] "" XXX
SG_ Standstill_2 : 41|1@1+ (1,0) [0|1] "" XXX
SG_ ES_Error : 42|1@1+ (1,0) [0|1] "" XXX
SG_ Signal5 : 43|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 44|3@1+ (1,0) [0|7] "" XXX
SG_ Signal6 : 47|1@1+ (1,0) [0|1] "" XXX
SG_ Button : 48|3@1+ (1,0) [0|7] "" XXX
SG_ Signal7 : 51|5@1+ (1,0) [0|31] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 354 ES_RPM: 8 XXX
SG_ Brake : 8|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 9|1@1+ (1,0) [0|1] "" XXX
SG_ RPM : 16|16@1+ (1,0) [0|65535] "" XXX
SG_ Checksum : 32|8@1+ (1,0) [0|255] "" XXX
SG_ Counter : 48|3@1+ (1,0) [0|7] "" XXX
BO_ 356 ES_LKAS: 8 XXX
SG_ Counter : 0|3@1+ (1,0) [0|7] "" XXX
SG_ LKAS_Command : 8|13@1- (-1,0) [-4096|4096] "" XXX
SG_ LKAS_Active : 24|1@1+ (1,0) [0|1] "" XXX
SG_ Checksum : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 359 ES_LDW: 8 XXX
SG_ All_depart_2015 : 0|1@1+ (1,0) [0|1] "" XXX
SG_ Right_Line_2017 : 24|1@1+ (1,0) [0|1] "" XXX
SG_ Left_Line_2017 : 25|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1All_Depart : 28|1@1+ (1,0) [0|1] "" XXX
SG_ Sig2All_Depart : 31|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Inactive_2017 : 36|1@1+ (1,0) [0|1] "" XXX
SG_ LKAS_Active : 37|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1Right_Depart : 48|1@1+ (1,0) [0|1] "" XXX
SG_ Sig1Right_Depart_Front : 49|1@1+ (1,0) [0|1] "" XXX
SG_ Sig2Right_Depart : 50|1@1+ (1,0) [0|1] "" XXX
SG_ Left_Depart_Front : 51|1@1+ (1,0) [0|1] "" XXX
SG_ Sig3All_Depart : 52|1@1+ (1,0) [0|1] "" XXX
BO_ 604 BSD_RCTA: 8 XXX
SG_ Counter : 0|3@1+ (1,0) [0|7] "" XXX
SG_ State : 5|1@1+ (1,0) [0|1] "" XXX
SG_ R_ADJACENT : 32|1@1+ (1,0) [0|1] "" XXX
SG_ L_ADJACENT : 33|1@1+ (1,0) [0|1] "" XXX
SG_ R_APPROACHING : 42|1@1+ (1,0) [0|1] "" XXX
SG_ L_APPROACHING : 43|1@1+ (1,0) [0|1] "" XXX
SG_ R_RCTA : 46|1@1+ (1,0) [0|1] "" XXX
SG_ L_RCTA : 47|1@1+ (1,0) [0|1] "" XXX
BO_ 642 Dashlights: 8 XXX
SG_ Counter : 12|4@1+ (1,0) [0|15] "" XXX
SG_ SEATBELT_FL : 40|1@1+ (1,0) [0|1] "" XXX
SG_ LEFT_BLINKER : 44|1@1+ (1,0) [0|1] "" XXX
SG_ RIGHT_BLINKER : 45|1@1+ (1,0) [0|1] "" XXX
BO_ 880 Steering_Torque_2: 8 XXX
SG_ Steering_Voltage_Flat : 0|8@1+ (1,0) [0|255] "" XXX
SG_ Steer_Torque_Sensor : 29|11@1- (-1,0) [-1000|1000] "" XXX
SG_ Counter : 40|4@1+ (1,0) [0|15] "" XXX
BO_ 884 BodyInfo: 8 XXX
SG_ DOOR_OPEN_FR : 24|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_FL : 25|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RL : 26|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_RR : 27|1@1+ (1,0) [0|1] "" XXX
SG_ DOOR_OPEN_Hatch : 28|1@1+ (1,0) [0|1] "" XXX
BO_ 864 Engine_Temp: 8 XXX
SG_ Oil_Temp : 16|8@1+ (1,-40) [0|255] "" XXX
SG_ Coolant_Temp : 24|8@1+ (1,-40) [0|255] "" XXX
SG_ Cruise_Activated : 45|1@1+ (1,0) [0|1] "" XXX
SG_ Saved_Speed : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 866 Fuel: 8 XXX
BO_ 1745 Dash_State: 8 XXX
SG_ Units : 15|1@1+ (1,0) [0|1] "" XXX
CM_ SG_ 320 Off_Throttle_2 "Less sensitive";
CM_ SG_ 320 Throttle_Body "Throttle related";
CM_ SG_ 328 Gear "15 = P, 14 = R, 0 = N, 1-6=gear";
CM_ SG_ 328 Gear_2 "15 = P, 14 = R, 0 = N, 1-6=gear";
CM_ SG_ 353 Button "1 = main, 2 = set shallow, 3 = set deep, 4 = resume shallow, 5 resume deep";
CM_ SG_ 354 RPM "20hz version of Transmission_Engine under Transmission";
CM_ SG_ 359 Sig1Right_Depart "right depart, hill steep and seatbelt disengage";
CM_ SG_ 359 LKAS_Inactive_2017 "1 when not steering, 0 when lkas steering";
CM_ SG_ 359 Sig1Right_Depart_Front "object in front, right depart, hill steep and seatbelt disengage alert ";
CM_ SG_ 359 Left_Depart_Front "warning after acceleration into car in front and left depart";
CM_ SG_ 359 Sig1All_Depart "Left and right depart";
CM_ SG_ 359 Sig2All_Depart "Left and right depart";
CM_ SG_ 359 All_depart_2015 "always 1 on 2017";
CM_ SG_ 604 R_APPROACHING "Faster car approaching in far right lane";
CM_ SG_ 604 L_APPROACHING "Faster car approaching in far left lane";
CM_ SG_ 604 R_RCTA "Rear cross traffic alert, only when in R gear";
CM_ SG_ 604 L_RCTA "Rear cross traffic alert, only when in R gear";
CM_ SG_ 642 Counter "Affected by signals";
CM_ SG_ 642 SEATBELT_FL "Driver seatbelt";
CM_ SG_ 880 Steering_Voltage_Flat "receives later than 371";
VAL_ 328 Gear 0 "N" 1 "D" 2 "D" 3 "D" 4 "D" 5 "D" 6 "D" 14 "R" 15 "P";
VAL_ 1745 Units 0 "Metric" 1 "Imperial";
CM_ "subaru_outback_2019.dbc starts here"
BO_ 358 ES_DashStatus: 8 XXX
SG_ Not_Ready_Startup : 0|3@1+ (1,0) [0|7] "" XXX
SG_ Seatbelt_Disengage : 12|2@1+ (1,0) [0|3] "" XXX
SG_ Disengage_Alert : 14|2@1+ (1,0) [0|3] "" XXX
SG_ Cruise_On : 16|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_Activated : 17|1@1+ (1,0) [0|1] "" XXX
SG_ Signal1 : 18|1@1+ (1,0) [0|1] "" XXX
SG_ WHEELS_MOVING_2015 : 19|1@1+ (1,0) [0|1] "" XXX
SG_ Driver_Input : 20|1@1+ (1,0) [0|1] "" XXX
SG_ Distance_Bars : 21|3@1+ (1,0) [0|7] "" XXX
SG_ Cruise_Set_Speed : 24|8@1+ (1,0) [0|255] "" XXX
SG_ ES_Error : 32|1@1+ (1,0) [0|1] "" XXX
SG_ Cruise_On_2 : 34|1@1+ (1,0) [0|1] "" XXX
SG_ Counter : 37|3@1+ (1,0) [0|7] "" XXX
SG_ Steep_Hill_Disengage : 44|1@1+ (1,0) [0|3] "" XXX
SG_ Lead_Car : 46|1@1+ (1,0) [0|1] "" XXX
SG_ Obstacle_Distance : 48|4@1+ (5,0) [0|15] "m" XXX
BO_ 881 Steering_Torque: 8 XXX
SG_ Steering_Motor_Flat : 0|10@1+ (32,0) [0|1000] "" XXX
SG_ Steer_Torque_Output : 16|11@1- (-32,0) [-1000|1000] "" XXX
SG_ LKA_Lockout : 27|1@1+ (1,0) [0|1] "" XXX
SG_ Steer_Torque_Sensor : 29|11@1- (-1,0) [-1000|1000] "" XXX
SG_ Steering_Angle : 40|16@1- (-0.033,0) [-600|600] "" XXX
CM_ SG_ 358 Disengage_Alert "seatbelt and steep hill disengage";
CM_ SG_ 358 ES_Error "No engagement until restart";
CM_ SG_ 358 Lead_Car "front car detected";

View File

@@ -132,6 +132,9 @@ BO_ 614 STEERING_IPAS: 8 IPAS
SG_ SET_ME_X00_1 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 35 SECONDARY_STEER_ANGLE: 8 XXX
SG_ ZORRO_STEER : 7|24@0- (0.004901594652,0) [-500|500] "" XXX
BO_ 643 PRE_COLLISION: 7 DSU
SG_ COUNTER : 7|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_X00 : 15|8@0+ (1,0) [0|255] "" XXX

1399
opendbc/vw_golf_mk4.dbc Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,11 @@ void detect_board_type(void) {
// SPI lines floating: white (TODO: is this reliable? Not really, we have to enable ESP/GPS to be able to detect this on the UART)
set_gpio_output(GPIOC, 14, 1);
set_gpio_output(GPIOC, 5, 1);
if(!detect_with_pull(GPIOB, 1, PULL_UP)){
#ifdef CHECK_DOS
if(!detect_with_pull(GPIOB, 1, PULL_UP) && detect_with_pull(GPIOB, 15, PULL_UP)){
#else
if (false) {
#endif
hw_type = HW_TYPE_DOS;
current_board = &board_dos;
} else if((detect_with_pull(GPIOA, 4, PULL_DOWN)) || (detect_with_pull(GPIOA, 5, PULL_DOWN)) || (detect_with_pull(GPIOA, 6, PULL_DOWN)) || (detect_with_pull(GPIOA, 7, PULL_DOWN))){

View File

@@ -1,3 +1,3 @@
#!/bin/bash
sudo apt-get install gcc-arm-none-eabi python-pip
sudo pip install libusb1 pycrypto requests
sudo pip install libusb1 pycryptodome requests

View File

@@ -4,4 +4,4 @@ sudo easy_install pip
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap ArmMbed/homebrew-formulae
brew install python dfu-util arm-none-eabi-gcc
pip install --user libusb1 pycrypto requests
pip install --user libusb1 pycryptodome requests

View File

@@ -38,6 +38,7 @@
#define SAFETY_VOLKSWAGEN_PQ 21U
#define SAFETY_SUBARU_LEGACY 22U
#define SAFETY_HYUNDAI_LEGACY 23U
#define SAFETY_HYUNDAI_COMMUNITY 24U
uint16_t current_safety_mode = SAFETY_SILENT;
const safety_hooks *current_hooks = &nooutput_hooks;

View File

@@ -56,7 +56,7 @@ static int nissan_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
// X-Trail 0x15c, Leaf 0x239
if ((addr == 0x15c) || (addr == 0x239)) {
if (addr == 0x15c){
gas_pressed = ((GET_BYTE(to_push, 5) << 2) | ((GET_BYTE(to_push, 6) >> 6) & 0x3)) > 1;
gas_pressed = ((GET_BYTE(to_push, 5) << 2) | ((GET_BYTE(to_push, 6) >> 6) & 0x3)) > 3;
} else {
gas_pressed = GET_BYTE(to_push, 0) > 3;
}

View File

@@ -157,7 +157,7 @@ def gen_code(folder, name, f_sym, dt_sym, x_sym, obs_eqs, dim_x, dim_err, eskf_p
class EKF_sym():
def __init__(self, folder, name, Q, x_initial, P_initial, dim_main, dim_main_err, # pylint: disable=dangerous-default-value
N=0, dim_augment=0, dim_augment_err=0, maha_test_kinds=[], global_vars=None):
N=0, dim_augment=0, dim_augment_err=0, maha_test_kinds=[], global_vars=None, max_rewind_age=1.0):
"""Generates process function and all observation functions for the kalman filter."""
self.msckf = N > 0
self.N = N
@@ -184,6 +184,7 @@ class EKF_sym():
self.Q = Q
# rewind stuff
self.max_rewind_age = max_rewind_age
self.rewind_t = []
self.rewind_states = []
self.rewind_obscache = []
@@ -379,7 +380,7 @@ class EKF_sym():
# rewind
if self.filter_time is not None and t < self.filter_time:
if len(self.rewind_t) == 0 or t < self.rewind_t[0] or t < self.rewind_t[-1] - 1.0:
if len(self.rewind_t) == 0 or t < self.rewind_t[0] or t < self.rewind_t[-1] - self.max_rewind_age:
print("observation too old at %.3f with filter at %.3f, ignoring" % (t, self.filter_time))
return None
rewound = self.rewind(t)

18
scripts/atl.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/usr/bin/bash
export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib
export HOME=/data/data/com.termux/files/home
export PATH=/usr/local/bin:/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/sbin:/data/data/com.termux/files/usr/bin/applets:/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/data/data/com.termux/files/usr/bin/git
export PYTHONPATH=/data/openpilot
echo -n 1 > /data/params/d/dp_is_updating
if [ $1 -eq 1 ]; then
printf %s "1" > /data/params/d/dp_atl
printf %s "0" > /data/params/d/dp_uploader
fi
if [ $1 -eq 0 ]; then
printf %s "0" > /data/params/d/dp_atl
cd /data/openpilot || exit
git reset --hard @{u}
git clean -xdf
fi
reboot

10
scripts/disable_relay.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/usr/bin/bash
if [ $1 -eq 1 ]; then
printf %s "1" > /data/params/d/dp_disable_relay
fi
if [ $1 -eq 0 ]; then
printf %s "0" > /data/params/d/dp_disable_relay
fi
rm -rf /data/openpilot/selfdrive/boardd/boardd && reboot

13
scripts/rebuild.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/bash
export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib
export HOME=/data/data/com.termux/files/home
export PATH=/usr/local/bin:/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/sbin:/data/data/com.termux/files/usr/bin/applets:/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/data/data/com.termux/files/usr/bin/git
printf %s "1" > /data/params/d/DragonUpdating
cd /data/openpilot || exit
#git reset --hard @{u}
git clean -xdf
rm -fr /tmp/scons_cache/
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
scons --clean
reboot

10
scripts/reset_dp.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/usr/bin/bash
export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib
export HOME=/data/data/com.termux/files/home
export PATH=/usr/local/bin:/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/sbin:/data/data/com.termux/files/usr/bin/applets:/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/data/data/com.termux/files/usr/bin/git
export PYTHONPATH=/data/openpilot
echo -n 1 > /data/params/d/dp_is_updating
rm -fr /data/params/d/dp_*
rm -fr /data/params/d/Dragon*
reboot

9
scripts/reset_update.sh Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/bash
export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib
export HOME=/data/data/com.termux/files/home
export PATH=/usr/local/bin:/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/sbin:/data/data/com.termux/files/usr/bin/applets:/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/data/data/com.termux/files/usr/bin/git
export PYTHONPATH=/data/openpilot
echo -n 1 > /data/params/d/dp_is_updating
rm /data/openpilot/panda/board/obj/panda.bin
cd /data/openpilot && git fetch --all && git reset --hard @{u} && git clean -xdf && scons --clean && reboot

View File

@@ -0,0 +1,9 @@
#!/usr/bin/bash
export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib
export HOME=/data/data/com.termux/files/home
export PATH=/usr/local/bin:/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/sbin:/data/data/com.termux/files/usr/bin/applets:/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/data/data/com.termux/files/usr/bin/python
export PYTHONPATH=/data/openpilot
printf %s "1" > /data/params/d/DragonUpdating
rm /data/openpilot/panda/board/obj/panda.bin
cd /data/openpilot/panda || exit ; pkill -f boardd ; python -c "from panda import Panda; Panda().flash()" && reboot

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View File

@@ -0,0 +1,513 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-01 16:34+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: selfdrive/controls/lib/events.py:151
msgid "openpilot Unavailable"
msgstr ""
#: selfdrive/controls/lib/events.py:158 selfdrive/controls/lib/events.py:165
msgid "TAKE CONTROL IMMEDIATELY"
msgstr ""
#: selfdrive/controls/lib/events.py:185 selfdrive/controls/lib/events.py:335
#: selfdrive/controls/lib/events.py:361 selfdrive/controls/lib/events.py:425
#: selfdrive/controls/lib/events.py:477 selfdrive/controls/lib/events.py:529
#: selfdrive/controls/lib/events.py:539 selfdrive/controls/lib/events.py:654
msgid "TAKE CONTROL"
msgstr ""
#: selfdrive/controls/lib/events.py:186
#, python-format
msgid "Steer Unavailable Below %d %s"
msgstr ""
#: selfdrive/controls/lib/events.py:194
#, python-format
msgid "Calibration in Progress: %d%%"
msgstr ""
#: selfdrive/controls/lib/events.py:195
#, python-format
msgid "Drive Above %d %s"
msgstr ""
#: selfdrive/controls/lib/events.py:202
msgid "Poor GPS reception"
msgstr ""
#: selfdrive/controls/lib/events.py:203
msgid "If sky is visible, contact support"
msgstr ""
#: selfdrive/controls/lib/events.py:203
msgid "Check GPS antenna placement"
msgstr ""
#: selfdrive/controls/lib/events.py:208
msgid "Cruise Mode Disabled"
msgstr ""
#: selfdrive/controls/lib/events.py:210
msgid "Main Switch Off"
msgstr ""
#: selfdrive/controls/lib/events.py:220
msgid "DEBUG ALERT"
msgstr ""
#: selfdrive/controls/lib/events.py:228
msgid "Be ready to take over at any time"
msgstr ""
#: selfdrive/controls/lib/events.py:229 selfdrive/controls/lib/events.py:245
#: selfdrive/controls/lib/events.py:253 selfdrive/controls/lib/events.py:261
msgid "Always keep hands on wheel and eyes on road"
msgstr ""
#: selfdrive/controls/lib/events.py:236
msgid "WARNING: White panda is deprecated"
msgstr ""
#: selfdrive/controls/lib/events.py:237 selfdrive/controls/lib/events.py:277
msgid "Upgrade to comma two or black panda"
msgstr ""
#: selfdrive/controls/lib/events.py:244
msgid "WARNING: This branch is not tested"
msgstr ""
#: selfdrive/controls/lib/events.py:252
msgid "Dashcam mode"
msgstr ""
#: selfdrive/controls/lib/events.py:260
msgid "Dashcam mode for unsupported car"
msgstr ""
#: selfdrive/controls/lib/events.py:268
msgid "Unsupported Giraffe Configuration"
msgstr ""
#: selfdrive/controls/lib/events.py:269
msgid "Visit comma.ai/tg"
msgstr ""
#: selfdrive/controls/lib/events.py:276
msgid "White Panda Is No Longer Supported"
msgstr ""
#: selfdrive/controls/lib/events.py:280
msgid "White panda is no longer supported"
msgstr ""
#: selfdrive/controls/lib/events.py:285
msgid "Stock LKAS is turned on"
msgstr ""
#: selfdrive/controls/lib/events.py:286
msgid "Turn off stock LKAS to engage"
msgstr ""
#: selfdrive/controls/lib/events.py:295
msgid "Community Feature Detected"
msgstr ""
#: selfdrive/controls/lib/events.py:296
msgid "Enable Community Features in Developer Settings"
msgstr ""
#: selfdrive/controls/lib/events.py:303
msgid "Dashcam Mode"
msgstr ""
#: selfdrive/controls/lib/events.py:304
msgid "Car Unrecognized"
msgstr ""
#: selfdrive/controls/lib/events.py:311 selfdrive/controls/lib/events.py:319
#: selfdrive/controls/lib/events.py:327
msgid "BRAKE!"
msgstr ""
#: selfdrive/controls/lib/events.py:312
msgid "Stock AEB: Risk of Collision"
msgstr ""
#: selfdrive/controls/lib/events.py:320
msgid "Stock FCW: Risk of Collision"
msgstr ""
#: selfdrive/controls/lib/events.py:328
msgid "Risk of Collision"
msgstr ""
#: selfdrive/controls/lib/events.py:336
msgid "Lane Departure Detected"
msgstr ""
#: selfdrive/controls/lib/events.py:345
msgid "openpilot will not brake while gas pressed"
msgstr ""
#: selfdrive/controls/lib/events.py:353
msgid "Vehicle Parameter Identification Failed"
msgstr ""
#: selfdrive/controls/lib/events.py:362 selfdrive/controls/lib/events.py:530
#: selfdrive/controls/lib/events.py:533
msgid "Steering Temporarily Unavailable"
msgstr ""
#: selfdrive/controls/lib/events.py:369
msgid "KEEP EYES ON ROAD: Driver Distracted"
msgstr ""
#: selfdrive/controls/lib/events.py:377
msgid "KEEP EYES ON ROAD"
msgstr ""
#: selfdrive/controls/lib/events.py:378
msgid "Driver Appears Distracted"
msgstr ""
#: selfdrive/controls/lib/events.py:385 selfdrive/controls/lib/events.py:409
msgid "DISENGAGE IMMEDIATELY"
msgstr ""
#: selfdrive/controls/lib/events.py:386
msgid "Driver Was Distracted"
msgstr ""
#: selfdrive/controls/lib/events.py:393
msgid "TOUCH STEERING WHEEL: No Face Detected"
msgstr ""
#: selfdrive/controls/lib/events.py:401
msgid "TOUCH STEERING WHEEL"
msgstr ""
#: selfdrive/controls/lib/events.py:402
msgid "Driver Is Unresponsive"
msgstr ""
#: selfdrive/controls/lib/events.py:410
msgid "Driver Was Unresponsive"
msgstr ""
#: selfdrive/controls/lib/events.py:417
msgid "CHECK DRIVER FACE VISIBILITY"
msgstr ""
#: selfdrive/controls/lib/events.py:418
msgid "Driver Monitor Model Output Uncertain"
msgstr ""
#: selfdrive/controls/lib/events.py:426
msgid "Resume Driving Manually"
msgstr ""
#: selfdrive/controls/lib/events.py:433
msgid "STOPPED"
msgstr ""
#: selfdrive/controls/lib/events.py:434
msgid "Press Resume to Move"
msgstr ""
#: selfdrive/controls/lib/events.py:445
msgid "Steer Left to Start Lane Change"
msgstr ""
#: selfdrive/controls/lib/events.py:446 selfdrive/controls/lib/events.py:454
#: selfdrive/controls/lib/events.py:462 selfdrive/controls/lib/events.py:470
#: selfdrive/controls/lib/events.py:814 selfdrive/controls/lib/events.py:822
#: selfdrive/controls/lib/events.py:830
msgid "Monitor Other Vehicles"
msgstr ""
#: selfdrive/controls/lib/events.py:453
msgid "Steer Right to Start Lane Change"
msgstr ""
#: selfdrive/controls/lib/events.py:461
msgid "Car Detected in Blindspot"
msgstr ""
#: selfdrive/controls/lib/events.py:469 selfdrive/controls/lib/events.py:829
msgid "Changing Lane"
msgstr ""
#: selfdrive/controls/lib/events.py:478
msgid "Turn Exceeds Steering Limit"
msgstr ""
#: selfdrive/controls/lib/events.py:503
msgid "Brake Hold Active"
msgstr ""
#: selfdrive/controls/lib/events.py:508
msgid "Park Brake Engaged"
msgstr ""
#: selfdrive/controls/lib/events.py:513
msgid "Pedal Pressed During Attempt"
msgstr ""
#: selfdrive/controls/lib/events.py:524
msgid "Enable Adaptive Cruise"
msgstr ""
#: selfdrive/controls/lib/events.py:540
msgid "Attempting Refocus: Camera Focus Invalid"
msgstr ""
#: selfdrive/controls/lib/events.py:546
msgid "Out of Storage Space"
msgstr ""
#: selfdrive/controls/lib/events.py:551
msgid "Speed Too Low"
msgstr ""
#: selfdrive/controls/lib/events.py:556 selfdrive/controls/lib/events.py:560
msgid "NEOS Update Required"
msgstr ""
#: selfdrive/controls/lib/events.py:557
msgid "Please Wait for Update"
msgstr ""
#: selfdrive/controls/lib/events.py:565 selfdrive/controls/lib/events.py:569
msgid "No Data from Device Sensors"
msgstr ""
#: selfdrive/controls/lib/events.py:566 selfdrive/controls/lib/events.py:579
#: selfdrive/controls/lib/events.py:686
msgid "Reboot your Device"
msgstr ""
#: selfdrive/controls/lib/events.py:578 selfdrive/controls/lib/events.py:582
msgid "Speaker not found"
msgstr ""
#: selfdrive/controls/lib/events.py:586
msgid "Distraction Level Too High"
msgstr ""
#: selfdrive/controls/lib/events.py:590
msgid "System Overheated"
msgstr ""
#: selfdrive/controls/lib/events.py:591
msgid "System overheated"
msgstr ""
#: selfdrive/controls/lib/events.py:595 selfdrive/controls/lib/events.py:596
msgid "Gear not D"
msgstr ""
#: selfdrive/controls/lib/events.py:600
msgid "Calibration Invalid: Reposition Device and Recalibrate"
msgstr ""
#: selfdrive/controls/lib/events.py:601
msgid "Calibration Invalid: Reposition Device & Recalibrate"
msgstr ""
#: selfdrive/controls/lib/events.py:605 selfdrive/controls/lib/events.py:607
msgid "Calibration in Progress"
msgstr ""
#: selfdrive/controls/lib/events.py:611
msgid "Door Open"
msgstr ""
#: selfdrive/controls/lib/events.py:612
msgid "Door open"
msgstr ""
#: selfdrive/controls/lib/events.py:616
msgid "Seatbelt Unlatched"
msgstr ""
#: selfdrive/controls/lib/events.py:617
msgid "Seatbelt unlatched"
msgstr ""
#: selfdrive/controls/lib/events.py:621 selfdrive/controls/lib/events.py:622
msgid "ESP Off"
msgstr ""
#: selfdrive/controls/lib/events.py:626 selfdrive/controls/lib/events.py:627
msgid "Low Battery"
msgstr ""
#: selfdrive/controls/lib/events.py:631 selfdrive/controls/lib/events.py:632
msgid "Communication Issue between Processes"
msgstr ""
#: selfdrive/controls/lib/events.py:637 selfdrive/controls/lib/events.py:638
msgid "Radar Communication Issue"
msgstr ""
#: selfdrive/controls/lib/events.py:643 selfdrive/controls/lib/events.py:644
#: selfdrive/controls/lib/events.py:648 selfdrive/controls/lib/events.py:649
msgid "Radar Error: Restart the Car"
msgstr ""
#: selfdrive/controls/lib/events.py:655 selfdrive/controls/lib/events.py:659
msgid "Driving model lagging"
msgstr ""
#: selfdrive/controls/lib/events.py:663 selfdrive/controls/lib/events.py:664
#: selfdrive/controls/lib/events.py:673 selfdrive/controls/lib/events.py:674
msgid "Vision Model Output Uncertain"
msgstr ""
#: selfdrive/controls/lib/events.py:668 selfdrive/controls/lib/events.py:669
#: selfdrive/controls/lib/events.py:678 selfdrive/controls/lib/events.py:679
msgid "Device Fell Off Mount"
msgstr ""
#: selfdrive/controls/lib/events.py:683 selfdrive/controls/lib/events.py:689
msgid "Low Memory: Reboot Your Device"
msgstr ""
#: selfdrive/controls/lib/events.py:685
msgid "RAM Critically Low"
msgstr ""
#: selfdrive/controls/lib/events.py:694 selfdrive/controls/lib/events.py:695
msgid "Controls Failed"
msgstr ""
#: selfdrive/controls/lib/events.py:699
msgid "Controls Mismatch"
msgstr ""
#: selfdrive/controls/lib/events.py:703 selfdrive/controls/lib/events.py:705
#: selfdrive/controls/lib/events.py:709
msgid "CAN Error: Check Connections"
msgstr ""
#: selfdrive/controls/lib/events.py:713 selfdrive/controls/lib/events.py:719
msgid "LKAS Fault: Restart the Car"
msgstr ""
#: selfdrive/controls/lib/events.py:715
msgid "LKAS Fault: Restart the car to engage"
msgstr ""
#: selfdrive/controls/lib/events.py:723 selfdrive/controls/lib/events.py:729
#: selfdrive/controls/lib/events.py:807
msgid "Cruise Fault: Restart the Car"
msgstr ""
#: selfdrive/controls/lib/events.py:725 selfdrive/controls/lib/events.py:803
msgid "Cruise Fault: Restart the car to engage"
msgstr ""
#: selfdrive/controls/lib/events.py:733
msgid "Gas Fault: Restart the Car"
msgstr ""
#: selfdrive/controls/lib/events.py:734
msgid "Gas Error: Restart the Car"
msgstr ""
#: selfdrive/controls/lib/events.py:738 selfdrive/controls/lib/events.py:739
msgid "Reverse Gear"
msgstr ""
#: selfdrive/controls/lib/events.py:743
msgid "Cruise Is Off"
msgstr ""
#: selfdrive/controls/lib/events.py:747 selfdrive/controls/lib/events.py:748
msgid "Planner Solution Error"
msgstr ""
#: selfdrive/controls/lib/events.py:752 selfdrive/controls/lib/events.py:754
#: selfdrive/controls/lib/events.py:758
msgid "Harness Malfunction"
msgstr ""
#: selfdrive/controls/lib/events.py:755
msgid "Please Check Hardware"
msgstr ""
#: selfdrive/controls/lib/events.py:763 selfdrive/controls/lib/events.py:772
msgid "openpilot Canceled"
msgstr ""
#: selfdrive/controls/lib/events.py:764
msgid "No close lead car"
msgstr ""
#: selfdrive/controls/lib/events.py:767
msgid "No Close Lead Car"
msgstr ""
#: selfdrive/controls/lib/events.py:773
msgid "Speed too low"
msgstr ""
#: selfdrive/controls/lib/events.py:780 selfdrive/controls/lib/events.py:785
msgid "Speed Too High"
msgstr ""
#: selfdrive/controls/lib/events.py:781
msgid "Slow down to resume operation"
msgstr ""
#: selfdrive/controls/lib/events.py:786
msgid "Slow down to engage"
msgstr ""
#: selfdrive/controls/lib/events.py:793
msgid "Please connect to Internet"
msgstr ""
#: selfdrive/controls/lib/events.py:794
msgid "An Update Check Is Required to Engage"
msgstr ""
#: selfdrive/controls/lib/events.py:797
msgid "Please Connect to Internet"
msgstr ""
#: selfdrive/controls/lib/events.py:813
msgid "Left ALC will start in 3s"
msgstr ""
#: selfdrive/controls/lib/events.py:821
msgid "Right ALC will start in 3s"
msgstr ""
#: selfdrive/controls/lib/events.py:837
msgid "STEERING REQUIRED: Lane Keeping OFF"
msgstr ""
#: selfdrive/controls/lib/events.py:845
msgid "STEERING REQUIRED: Blinkers ON"
msgstr ""
#: selfdrive/controls/lib/events.py:853 selfdrive/controls/lib/events.py:858
msgid "Lead Car Is Moving"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,503 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-14 16:46+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: nikkurie <@nikkurie>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ja-JP\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: selfdrive/controls/lib/events.py:146
msgid "openpilot Unavailable"
msgstr "オープンパイロットは利用できません"
#: selfdrive/controls/lib/events.py:153 selfdrive/controls/lib/events.py:160
msgid "TAKE CONTROL IMMEDIATELY"
msgstr "すぐにハンドルを持って"
#: selfdrive/controls/lib/events.py:180 selfdrive/controls/lib/events.py:330
#: selfdrive/controls/lib/events.py:356 selfdrive/controls/lib/events.py:420
#: selfdrive/controls/lib/events.py:472 selfdrive/controls/lib/events.py:524
#: selfdrive/controls/lib/events.py:534 selfdrive/controls/lib/events.py:543
msgid "TAKE CONTROL"
msgstr "ハンドルを持って"
#: selfdrive/controls/lib/events.py:181
msgid "Steer Unavailable Below"
msgstr "横の制御が無効になり速度が以下になります"
#: selfdrive/controls/lib/events.py:190
msgid "Drive Above"
msgstr "制限速度以上の運転をしてください"
#: selfdrive/controls/lib/events.py:189
msgid "Calibration in Progress:"
msgstr "キャリブレーション中:"
#: selfdrive/controls/lib/events.py:197
msgid "Poor GPS reception"
msgstr "GPS受信不良"
#: selfdrive/controls/lib/events.py:198
msgid "If sky is visible, contact support"
msgstr "地下・トンネルでない場合は、カスタマーサービスに連絡ください"
#: selfdrive/controls/lib/events.py:198
msgid "Check GPS antenna placement"
msgstr "GPSアンテナの位置を確認してください。"
#: selfdrive/controls/lib/events.py:203
msgid "Cruise Mode Disabled"
msgstr "クルーズモードをオフ"
#: selfdrive/controls/lib/events.py:205
msgid "Main Switch Off"
msgstr "メインスイッチをオフ"
#: selfdrive/controls/lib/events.py:215
msgid "DEBUG ALERT"
msgstr "テストメッセージを削除"
#: selfdrive/controls/lib/events.py:223
msgid "Be ready to take over at any time"
msgstr "いつでも引き継げるよう準備しておいてください。"
#: selfdrive/controls/lib/events.py:224 selfdrive/controls/lib/events.py:240
#: selfdrive/controls/lib/events.py:248 selfdrive/controls/lib/events.py:256
msgid "Always keep hands on wheel and eyes on road"
msgstr "常にハンドルに触れ、道路から目を離さない"
#: selfdrive/controls/lib/events.py:231
msgid "WARNING: White panda is deprecated"
msgstr "警告: ホワイトパンダは推奨されていません。"
#: selfdrive/controls/lib/events.py:232 selfdrive/controls/lib/events.py:272
msgid "Upgrade to comma two or black panda"
msgstr "コンマ2やブラックパンダにアップグレード"
#: selfdrive/controls/lib/events.py:239
msgid "WARNING: This branch is not tested"
msgstr "警告: このブランチはテストされていません"
#: selfdrive/controls/lib/events.py:247
msgid "Dashcam mode"
msgstr "ダッシュカムモード"
#: selfdrive/controls/lib/events.py:255
msgid "Dashcam mode for unsupported car"
msgstr "未対応車のためダッシュカムモードのみ"
#: selfdrive/controls/lib/events.py:263
msgid "Unsupported Giraffe Configuration"
msgstr "サポートされていないGiraffeの設定"
#: selfdrive/controls/lib/events.py:264
msgid "Visit comma.ai/tg"
msgstr "comma.ai/tg を参照"
#: selfdrive/controls/lib/events.py:271
msgid "White Panda Is No Longer Supported"
msgstr "ホワイトパンダはサポート終了しました"
#: selfdrive/controls/lib/events.py:275
msgid "White panda is no longer supported"
msgstr "ホワイトパンダはサポート終了しました"
#: selfdrive/controls/lib/events.py:280
msgid "Stock LKAS is turned on"
msgstr "純正LKASがオン"
#: selfdrive/controls/lib/events.py:281
msgid "Turn off stock LKAS to engage"
msgstr "純正LKASをオフにしてエンゲージ"
#: selfdrive/controls/lib/events.py:290
msgid "Community Feature Detected"
msgstr "コミュニティ開発の機能を検出"
#: selfdrive/controls/lib/events.py:291
msgid "Enable Community Features in Developer Settings"
msgstr "開発者設定でコミュニティ機能を有効にする"
#: selfdrive/controls/lib/events.py:298
msgid "Dashcam Mode"
msgstr "ダッシュカムモード"
#: selfdrive/controls/lib/events.py:299
msgid "Car Unrecognized"
msgstr "認識できない車"
#: selfdrive/controls/lib/events.py:306 selfdrive/controls/lib/events.py:314
#: selfdrive/controls/lib/events.py:322
msgid "BRAKE!"
msgstr "ブレーキ!"
#: selfdrive/controls/lib/events.py:307
msgid "Stock AEB: Risk of Collision"
msgstr "衝突の危険"
#: selfdrive/controls/lib/events.py:315
msgid "Stock FCW: Risk of Collision"
msgstr "衝突の危険"
#: selfdrive/controls/lib/events.py:323
msgid "Risk of Collision"
msgstr "衝突の危険"
#: selfdrive/controls/lib/events.py:331
msgid "Lane Departure Detected"
msgstr "車線逸脱を検知"
#: selfdrive/controls/lib/events.py:340
msgid "openpilot will not brake while gas pressed"
msgstr "アクセル中、オープンパイロットはブレーキをかけません"
#: selfdrive/controls/lib/events.py:348
msgid "Vehicle Parameter Identification Failed"
msgstr "車両パラメータの識別に失敗しました。"
#: selfdrive/controls/lib/events.py:357 selfdrive/controls/lib/events.py:525
#: selfdrive/controls/lib/events.py:528
msgid "Steering Temporarily Unavailable"
msgstr "ステアリングは一時的に利用不可"
#: selfdrive/controls/lib/events.py:364
msgid "KEEP EYES ON ROAD: Driver Distracted"
msgstr "道路から目を離さないで:注意散漫です"
#: selfdrive/controls/lib/events.py:372
msgid "KEEP EYES ON ROAD"
msgstr "道路から目を離さないで"
#: selfdrive/controls/lib/events.py:373
msgid "Driver Appears Distracted"
msgstr "ドライバーは注意散漫に見えます"
#: selfdrive/controls/lib/events.py:380 selfdrive/controls/lib/events.py:404
msgid "DISENGAGE IMMEDIATELY"
msgstr "すぐに解除してください"
#: selfdrive/controls/lib/events.py:381
msgid "Driver Was Distracted"
msgstr "ドライバーは注意力散漫"
#: selfdrive/controls/lib/events.py:388
msgid "TOUCH STEERING WHEEL: No Face Detected"
msgstr "ハンドルに触れて:顔が検出できない"
#: selfdrive/controls/lib/events.py:396
msgid "TOUCH STEERING WHEEL"
msgstr "ハンドルに触れて"
#: selfdrive/controls/lib/events.py:397
msgid "Driver Is Unresponsive"
msgstr "ドライバーが無反応"
#: selfdrive/controls/lib/events.py:405
msgid "Driver Was Unresponsive"
msgstr "ドライバーが無反応でした"
#: selfdrive/controls/lib/events.py:412
msgid "CHECK DRIVER FACE VISIBILITY"
msgstr "ドライバーの顔の視認性を確認"
#: selfdrive/controls/lib/events.py:413
msgid "Driver Monitor Model Output Uncertain"
msgstr "ドライバー監視モデルが不完全"
#: selfdrive/controls/lib/events.py:421
msgid "Resume Driving Manually"
msgstr "手動で運転を再開"
#: selfdrive/controls/lib/events.py:428
msgid "STOPPED"
msgstr "停止"
#: selfdrive/controls/lib/events.py:429
msgid "Press Resume to Move"
msgstr "Resumeを押して移動します。"
#: selfdrive/controls/lib/events.py:440
msgid "Steer Left to Start Lane Change"
msgstr "左ハンドルで車線変更を開始"
#: selfdrive/controls/lib/events.py:441 selfdrive/controls/lib/events.py:449
#: selfdrive/controls/lib/events.py:457 selfdrive/controls/lib/events.py:465
#: selfdrive/controls/lib/events.py:793 selfdrive/controls/lib/events.py:801
#: selfdrive/controls/lib/events.py:809
msgid "Monitor Other Vehicles"
msgstr "他の車両を監視"
#: selfdrive/controls/lib/events.py:448
msgid "Steer Right to Start Lane Change"
msgstr "右ハンドルで車線変更を開始"
#: selfdrive/controls/lib/events.py:456
msgid "Car Detected in Blindspot"
msgstr "ブラインドスポットで車両を発見"
#: selfdrive/controls/lib/events.py:464 selfdrive/controls/lib/events.py:808
msgid "Changing Lane"
msgstr "レーンチェンジ中"
#: selfdrive/controls/lib/events.py:473
msgid "Turn Exceeds Steering Limit"
msgstr "ステアリングリミットを超えています"
#: selfdrive/controls/lib/events.py:498
msgid "Brake Hold Active"
msgstr "サイドブレーキが作動"
#: selfdrive/controls/lib/events.py:503
msgid "Park Brake Engaged"
msgstr "サイドブレーキ作動中"
#: selfdrive/controls/lib/events.py:508
msgid "Pedal Pressed During Attempt"
msgstr "ペダル/ブレーキを検出"
#: selfdrive/controls/lib/events.py:519
msgid "Enable Adaptive Cruise"
msgstr "ACCを有効化"
#: selfdrive/controls/lib/events.py:535 selfdrive/controls/lib/events.py:538
msgid "Vision Model Output Uncertain"
msgstr "映像が不明瞭です"
#: selfdrive/controls/lib/events.py:544
msgid "Attempting Refocus: Camera Focus Invalid"
msgstr "再フォーカス中です"
#: selfdrive/controls/lib/events.py:550
msgid "Out of Storage Space"
msgstr "空き容量不足"
#: selfdrive/controls/lib/events.py:555
msgid "Speed Too Low"
msgstr "速度が遅すぎます"
#: selfdrive/controls/lib/events.py:560 selfdrive/controls/lib/events.py:564
msgid "NEOS Update Required"
msgstr "NEOSの更新が必要"
#: selfdrive/controls/lib/events.py:561
msgid "Please Wait for Update"
msgstr "更新をお待ちください"
#: selfdrive/controls/lib/events.py:569 selfdrive/controls/lib/events.py:573
msgid "No Data from Device Sensors"
msgstr "デバイスセンサからのデータがありません"
#: selfdrive/controls/lib/events.py:570 selfdrive/controls/lib/events.py:583
#: selfdrive/controls/lib/events.py:665
msgid "Reboot your Device"
msgstr "デバイスを再起動"
#: selfdrive/controls/lib/events.py:582 selfdrive/controls/lib/events.py:586
msgid "Speaker not found"
msgstr "スピーカーが見つかりません"
#: selfdrive/controls/lib/events.py:590
msgid "Distraction Level Too High"
msgstr "注意力散漫すぎます"
#: selfdrive/controls/lib/events.py:594
msgid "System Overheated"
msgstr "オーバーヒート"
#: selfdrive/controls/lib/events.py:595
msgid "System overheated"
msgstr "オーバーヒート"
#: selfdrive/controls/lib/events.py:599 selfdrive/controls/lib/events.py:600
msgid "Gear not D"
msgstr "Dではない"
#: selfdrive/controls/lib/events.py:604
msgid "Calibration Invalid: Reposition Device and Recalibrate"
msgstr "キャリブレーションが無効です。再実行してください。"
#: selfdrive/controls/lib/events.py:605
msgid "Calibration Invalid: Reposition Device & Recalibrate"
msgstr "キャリブレーションが無効です。再実行してください。"
#: selfdrive/controls/lib/events.py:609 selfdrive/controls/lib/events.py:611
msgid "Calibration in Progress"
msgstr "キャリブレーション"
#: selfdrive/controls/lib/events.py:615
msgid "Door Open"
msgstr "ドアが開いています"
#: selfdrive/controls/lib/events.py:616
msgid "Door open"
msgstr "ドアが開いています"
#: selfdrive/controls/lib/events.py:620
msgid "Seatbelt Unlatched"
msgstr "シートベルト未着用"
#: selfdrive/controls/lib/events.py:621
msgid "Seatbelt unlatched"
msgstr "シートベルト未着用"
#: selfdrive/controls/lib/events.py:625 selfdrive/controls/lib/events.py:626
msgid "ESP Off"
msgstr "ESPオフ"
#: selfdrive/controls/lib/events.py:630 selfdrive/controls/lib/events.py:631
msgid "Low Battery"
msgstr "低バッテリー"
#: selfdrive/controls/lib/events.py:635 selfdrive/controls/lib/events.py:636
msgid "Communication Issue between Processes"
msgstr "プロセス間の通信の問題"
#: selfdrive/controls/lib/events.py:641 selfdrive/controls/lib/events.py:642
msgid "Radar Communication Issue"
msgstr "レーダー通信問題"
#: selfdrive/controls/lib/events.py:647 selfdrive/controls/lib/events.py:648
#: selfdrive/controls/lib/events.py:652 selfdrive/controls/lib/events.py:653
msgid "Radar Error: Restart the Car"
msgstr "レーダーエラー:車を再起動"
#: selfdrive/controls/lib/events.py:657 selfdrive/controls/lib/events.py:658
msgid "Driving model lagging"
msgstr "制御モデルに遅延がある"
#: selfdrive/controls/lib/events.py:662 selfdrive/controls/lib/events.py:668
msgid "Low Memory: Reboot Your Device"
msgstr "ローメモリ:デバイスを再起動"
#: selfdrive/controls/lib/events.py:664
msgid "RAM Critically Low"
msgstr "RAMが致命的に低い"
#: selfdrive/controls/lib/events.py:673 selfdrive/controls/lib/events.py:674
msgid "Controls Failed"
msgstr "制御失敗"
#: selfdrive/controls/lib/events.py:678
msgid "Controls Mismatch"
msgstr "制御不一致"
#: selfdrive/controls/lib/events.py:682 selfdrive/controls/lib/events.py:684
#: selfdrive/controls/lib/events.py:688
msgid "CAN Error: Check Connections"
msgstr "CANエラー:接続を確認"
#: selfdrive/controls/lib/events.py:692 selfdrive/controls/lib/events.py:698
msgid "LKAS Fault: Restart the Car"
msgstr "LKASの故障:車を再起動"
#: selfdrive/controls/lib/events.py:694
msgid "LKAS Fault: Restart the car to engage"
msgstr "LKASの故障:車を再起動後発進"
#: selfdrive/controls/lib/events.py:702 selfdrive/controls/lib/events.py:708
#: selfdrive/controls/lib/events.py:786
msgid "Cruise Fault: Restart the Car"
msgstr "クルーズ失敗:車を再起動"
#: selfdrive/controls/lib/events.py:704 selfdrive/controls/lib/events.py:782
msgid "Cruise Fault: Restart the car to engage"
msgstr "クルーズ失敗:車を再起動後発進"
#: selfdrive/controls/lib/events.py:712
msgid "Gas Fault: Restart the Car"
msgstr "アクセル故障:車を再起動"
#: selfdrive/controls/lib/events.py:713
msgid "Gas Error: Restart the Car"
msgstr "アクセルエラー:車を再起動"
#: selfdrive/controls/lib/events.py:717 selfdrive/controls/lib/events.py:718
msgid "Reverse Gear"
msgstr "Rに切り替え"
#: selfdrive/controls/lib/events.py:722
msgid "Cruise Is Off"
msgstr "クルーズコントロールオフ"
#: selfdrive/controls/lib/events.py:726 selfdrive/controls/lib/events.py:727
msgid "Planner Solution Error"
msgstr "Planner Solution エラー"
#: selfdrive/controls/lib/events.py:731 selfdrive/controls/lib/events.py:733
#: selfdrive/controls/lib/events.py:737
msgid "Harness Malfunction"
msgstr "ハーネスが故障"
#: selfdrive/controls/lib/events.py:734
msgid "Please Check Hardware"
msgstr "ハードウェアを確認して"
#: selfdrive/controls/lib/events.py:742 selfdrive/controls/lib/events.py:751
msgid "openpilot Canceled"
msgstr "オープンパイロットはキャンセルされました"
#: selfdrive/controls/lib/events.py:743
msgid "No close lead car"
msgstr "リードカー不在"
#: selfdrive/controls/lib/events.py:746
msgid "No Close Lead Car"
msgstr "リードカー不在"
#: selfdrive/controls/lib/events.py:752
msgid "Speed too low"
msgstr "速度が遅すぎる"
#: selfdrive/controls/lib/events.py:759 selfdrive/controls/lib/events.py:764
msgid "Speed Too High"
msgstr "速度が速すぎる"
#: selfdrive/controls/lib/events.py:760
msgid "Slow down to resume operation"
msgstr "速度を下げてオープンパイロットを再開"
#: selfdrive/controls/lib/events.py:765
msgid "Slow down to engage"
msgstr "速度を落として発進"
#: selfdrive/controls/lib/events.py:772
msgid "Please connect to Internet"
msgstr "インターネット接続を確認"
#: selfdrive/controls/lib/events.py:773
msgid "An Update Check Is Required to Engage"
msgstr "発進するには更新が必要です"
#: selfdrive/controls/lib/events.py:776
msgid "Please Connect to Internet"
msgstr "インターネット接続を確認"
#: selfdrive/controls/lib/events.py:792
msgid "Left ALC will start in 3s"
msgstr "左車線に移動します"
#: selfdrive/controls/lib/events.py:800
msgid "Right ALC will start in 3s"
msgstr "右車線に移動します"
#: selfdrive/controls/lib/events.py:816
msgid "STEERING REQUIRED: Lane Keeping OFF"
msgstr "操作が必要:レーンキープオフ"
#: selfdrive/controls/lib/events.py:824
msgid "STEERING REQUIRED: Blinkers ON"
msgstr "操作が必要:ウインカーオン"
#: selfdrive/controls/lib/events.py:832 selfdrive/controls/lib/events.py:837
msgid "Lead Car Is Moving"
msgstr "リードカーが移動しました"

Binary file not shown.

View File

@@ -0,0 +1,513 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-01 16:34+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ko-KR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: selfdrive/controls/lib/events.py:151
msgid "openpilot Unavailable"
msgstr "오픈파일럿 사용불가"
#: selfdrive/controls/lib/events.py:158 selfdrive/controls/lib/events.py:165
msgid "TAKE CONTROL IMMEDIATELY"
msgstr "핸들을 잡아주세요"
#: selfdrive/controls/lib/events.py:185 selfdrive/controls/lib/events.py:335
#: selfdrive/controls/lib/events.py:361 selfdrive/controls/lib/events.py:425
#: selfdrive/controls/lib/events.py:477 selfdrive/controls/lib/events.py:529
#: selfdrive/controls/lib/events.py:539 selfdrive/controls/lib/events.py:654
msgid "TAKE CONTROL"
msgstr "핸들을 잡아주세요"
#: selfdrive/controls/lib/events.py:186
#, python-format
msgid "Steer Unavailable Below %d %s"
msgstr "%d %s 이하에서는 조향제어가 불가합니다"
#: selfdrive/controls/lib/events.py:194
#, fuzzy, python-format
msgid "Calibration in Progress: %d%%"
msgstr "캘리브레이션 진행중: %d%%"
#: selfdrive/controls/lib/events.py:195
#, python-format
msgid "Drive Above %d %s"
msgstr "%d %s 이상의 속도로 주행하세요"
#: selfdrive/controls/lib/events.py:202
msgid "Poor GPS reception"
msgstr "GPS 신호 약함"
#: selfdrive/controls/lib/events.py:203
msgid "If sky is visible, contact support"
msgstr "환경에 문제가 없을경우 서비스팀에 연락하세요"
#: selfdrive/controls/lib/events.py:203
msgid "Check GPS antenna placement"
msgstr "GPS안테나 위치를 점검하세요"
#: selfdrive/controls/lib/events.py:208
msgid "Cruise Mode Disabled"
msgstr "크루즈 모드 꺼짐"
#: selfdrive/controls/lib/events.py:210
msgid "Main Switch Off"
msgstr ""
#: selfdrive/controls/lib/events.py:220
msgid "DEBUG ALERT"
msgstr ""
#: selfdrive/controls/lib/events.py:228
msgid "Be ready to take over at any time"
msgstr "오픈파일럿 사용준비가 되었습니다"
#: selfdrive/controls/lib/events.py:229 selfdrive/controls/lib/events.py:245
#: selfdrive/controls/lib/events.py:253 selfdrive/controls/lib/events.py:261
msgid "Always keep hands on wheel and eyes on road"
msgstr "안전운전을 위해 항상 핸들을 잡고 도로교통 상황을 주시하세요"
#: selfdrive/controls/lib/events.py:236
msgid "WARNING: White panda is deprecated"
msgstr "경고: 화이트 판다는 더이상 사용되지 않습니다"
#: selfdrive/controls/lib/events.py:237 selfdrive/controls/lib/events.py:277
msgid "Upgrade to comma two or black panda"
msgstr "콤마2나 블랙판다로 업그레이드 하세요"
#: selfdrive/controls/lib/events.py:244
msgid "WARNING: This branch is not tested"
msgstr "경고: 이 Branch는 테스트되지 않았습니다"
#: selfdrive/controls/lib/events.py:252
msgid "Dashcam mode"
msgstr "대시캠 모드"
#: selfdrive/controls/lib/events.py:260
msgid "Dashcam mode for unsupported car"
msgstr "안전운전을 위해 항상 핸들을 잡고 도로교통 상황을 주시하세요"
#: selfdrive/controls/lib/events.py:268
msgid "Unsupported Giraffe Configuration"
msgstr "지원되지 않는 지라프 설정"
#: selfdrive/controls/lib/events.py:269
msgid "Visit comma.ai/tg"
msgstr "comma.ai/tg 방문하세요"
#: selfdrive/controls/lib/events.py:276
msgid "White Panda Is No Longer Supported"
msgstr "화이트판다는 더 이상 지원되지 않습니다"
#: selfdrive/controls/lib/events.py:280
msgid "White panda is no longer supported"
msgstr "화이트판다는 더 이상 지원되지 않습니다"
#: selfdrive/controls/lib/events.py:285
msgid "Stock LKAS is turned on"
msgstr "차량의 LKAS 기능이 켜져 있습니다"
#: selfdrive/controls/lib/events.py:286
msgid "Turn off stock LKAS to engage"
msgstr "오픈파일럿 사용을 위해 LKAS를 끄세요"
#: selfdrive/controls/lib/events.py:295
msgid "Community Feature Detected"
msgstr "커뮤니티 기능 감지됨"
#: selfdrive/controls/lib/events.py:296
msgid "Enable Community Features in Developer Settings"
msgstr "개발자 설정에서 커뮤니티 기능을 활성화하세요"
#: selfdrive/controls/lib/events.py:303
msgid "Dashcam Mode"
msgstr "대시캠 모드"
#: selfdrive/controls/lib/events.py:304
msgid "Car Unrecognized"
msgstr "미인식 차량"
#: selfdrive/controls/lib/events.py:311 selfdrive/controls/lib/events.py:319
#: selfdrive/controls/lib/events.py:327
msgid "BRAKE!"
msgstr "브레이크!"
#: selfdrive/controls/lib/events.py:312
msgid "Stock AEB: Risk of Collision"
msgstr "순정 AEB: 충돌 위험"
#: selfdrive/controls/lib/events.py:320
msgid "Stock FCW: Risk of Collision"
msgstr "순정 FCW: 충돌 위험"
#: selfdrive/controls/lib/events.py:328
msgid "Risk of Collision"
msgstr "충돌 위험"
#: selfdrive/controls/lib/events.py:336
msgid "Lane Departure Detected"
msgstr "차선이탈이 감지되었습니다"
#: selfdrive/controls/lib/events.py:345
msgid "openpilot will not brake while gas pressed"
msgstr "가속중에는 오픈파일럿 브레이크 작동불가"
#: selfdrive/controls/lib/events.py:353
msgid "Vehicle Parameter Identification Failed"
msgstr "차량 매개 변수 식별 실패"
#: selfdrive/controls/lib/events.py:362 selfdrive/controls/lib/events.py:530
#: selfdrive/controls/lib/events.py:533
msgid "Steering Temporarily Unavailable"
msgstr "조향제어가 일시적으로 비활성화 되었습니다"
#: selfdrive/controls/lib/events.py:369
msgid "KEEP EYES ON ROAD: Driver Distracted"
msgstr "도로상황에 주의를 기울이세요"
#: selfdrive/controls/lib/events.py:377
msgid "KEEP EYES ON ROAD"
msgstr "도로상황에 주의하세요"
#: selfdrive/controls/lib/events.py:378
msgid "Driver Appears Distracted"
msgstr "전방주시 필요"
#: selfdrive/controls/lib/events.py:385 selfdrive/controls/lib/events.py:409
msgid "DISENGAGE IMMEDIATELY"
msgstr "경고: 조향제어가 즉시 해제됩니다"
#: selfdrive/controls/lib/events.py:386
msgid "Driver Was Distracted"
msgstr "운전자 전방주시 불안"
#: selfdrive/controls/lib/events.py:393
msgid "TOUCH STEERING WHEEL: No Face Detected"
msgstr "핸들을 터치하세요: 모니터링 없음"
#: selfdrive/controls/lib/events.py:401
msgid "TOUCH STEERING WHEEL"
msgstr "핸들을 터치하세요"
#: selfdrive/controls/lib/events.py:402
msgid "Driver Is Unresponsive"
msgstr "운전자 모니터링 없음"
#: selfdrive/controls/lib/events.py:410
msgid "Driver Was Unresponsive"
msgstr "운전자 모니터링 없음"
#: selfdrive/controls/lib/events.py:417
msgid "CHECK DRIVER FACE VISIBILITY"
msgstr "운전자 얼굴 확인 중"
#: selfdrive/controls/lib/events.py:418
msgid "Driver Monitor Model Output Uncertain"
msgstr "운전자 얼굴 인식이 어렵습니다"
#: selfdrive/controls/lib/events.py:426
msgid "Resume Driving Manually"
msgstr "수동으로 재출발 하세요"
#: selfdrive/controls/lib/events.py:433
msgid "STOPPED"
msgstr "잠시멈춤"
#: selfdrive/controls/lib/events.py:434
msgid "Press Resume to Move"
msgstr "재출발을 위해 RES버튼을 누르세요"
#: selfdrive/controls/lib/events.py:445
msgid "Steer Left to Start Lane Change"
msgstr "차선 변경을 위해 핸들을 좌측으로 살짝 돌리세요"
#: selfdrive/controls/lib/events.py:446 selfdrive/controls/lib/events.py:454
#: selfdrive/controls/lib/events.py:462 selfdrive/controls/lib/events.py:470
#: selfdrive/controls/lib/events.py:814 selfdrive/controls/lib/events.py:822
#: selfdrive/controls/lib/events.py:830
msgid "Monitor Other Vehicles"
msgstr "다른 차량에 주의하세요"
#: selfdrive/controls/lib/events.py:453
msgid "Steer Right to Start Lane Change"
msgstr "차선 변경을 위해 핸들을 우측으로 살짝 돌리세요"
#: selfdrive/controls/lib/events.py:461
msgid "Car Detected in Blindspot"
msgstr "측면 차량 접근 중"
#: selfdrive/controls/lib/events.py:469 selfdrive/controls/lib/events.py:829
msgid "Changing Lane"
msgstr "차선 변경 중"
#: selfdrive/controls/lib/events.py:478
msgid "Turn Exceeds Steering Limit"
msgstr ""
#: selfdrive/controls/lib/events.py:503
msgid "Brake Hold Active"
msgstr "브레이크 홀드 중"
#: selfdrive/controls/lib/events.py:508
msgid "Park Brake Engaged"
msgstr "파킹브레이크 체결 됨"
#: selfdrive/controls/lib/events.py:513
msgid "Pedal Pressed During Attempt"
msgstr "시작 중 페달 밟음"
#: selfdrive/controls/lib/events.py:524
msgid "Enable Adaptive Cruise"
msgstr "어댑티브 크루즈를 활성화하세요"
#: selfdrive/controls/lib/events.py:540
msgid "Attempting Refocus: Camera Focus Invalid"
msgstr "카메라 포커스 조정중: 카메라 포커스 부정확"
#: selfdrive/controls/lib/events.py:546
msgid "Out of Storage Space"
msgstr "저장공간 부족"
#: selfdrive/controls/lib/events.py:551
msgid "Speed Too Low"
msgstr "차량의 속도 낮음"
#: selfdrive/controls/lib/events.py:556 selfdrive/controls/lib/events.py:560
msgid "NEOS Update Required"
msgstr "NEOS 업데이트 필요"
#: selfdrive/controls/lib/events.py:557
msgid "Please Wait for Update"
msgstr "업데이트를 위해 기다리세요"
#: selfdrive/controls/lib/events.py:565 selfdrive/controls/lib/events.py:569
msgid "No Data from Device Sensors"
msgstr "EON센서로부터 데이터를 받지 못했습니다"
#: selfdrive/controls/lib/events.py:566 selfdrive/controls/lib/events.py:579
#: selfdrive/controls/lib/events.py:686
msgid "Reboot your Device"
msgstr "장치를 재시작 하세요"
#: selfdrive/controls/lib/events.py:578 selfdrive/controls/lib/events.py:582
msgid "Speaker not found"
msgstr "스피커를 찾을 수 없습니다"
#: selfdrive/controls/lib/events.py:586
msgid "Distraction Level Too High"
msgstr "운전자 전방주시 매우 불안"
#: selfdrive/controls/lib/events.py:590
msgid "System Overheated"
msgstr "시스템이 과열되었습니다"
#: selfdrive/controls/lib/events.py:591
msgid "System overheated"
msgstr "시스템이 과열되었습니다"
#: selfdrive/controls/lib/events.py:595 selfdrive/controls/lib/events.py:596
msgid "Gear not D"
msgstr "기어가 드라이브모드가 아닙니다"
#: selfdrive/controls/lib/events.py:600
msgid "Calibration Invalid: Reposition Device and Recalibrate"
msgstr "캘리브레이션 유효하지 않음: 장치 위치 조정 및 재 캘리브레이션"
#: selfdrive/controls/lib/events.py:601
msgid "Calibration Invalid: Reposition Device & Recalibrate"
msgstr "캘리브레이션 유효하지 않음: 장치 위치 조정 및 재 캘리브레이션"
#: selfdrive/controls/lib/events.py:605 selfdrive/controls/lib/events.py:607
msgid "Calibration in Progress"
msgstr "캘리브레이션 진행 중"
#: selfdrive/controls/lib/events.py:611
msgid "Door Open"
msgstr "도어가 열려있습니다"
#: selfdrive/controls/lib/events.py:612
msgid "Door open"
msgstr "도어가 열려있습니다"
#: selfdrive/controls/lib/events.py:616
msgid "Seatbelt Unlatched"
msgstr "안전벨트를 체결하세요"
#: selfdrive/controls/lib/events.py:617
msgid "Seatbelt unlatched"
msgstr "안전벨트를 체결하세요"
#: selfdrive/controls/lib/events.py:621 selfdrive/controls/lib/events.py:622
msgid "ESP Off"
msgstr "ESP 꺼짐"
#: selfdrive/controls/lib/events.py:626 selfdrive/controls/lib/events.py:627
msgid "Low Battery"
msgstr "배터리 부족"
#: selfdrive/controls/lib/events.py:631 selfdrive/controls/lib/events.py:632
msgid "Communication Issue between Processes"
msgstr "프로세스 간 통신 오류가 있습니다"
#: selfdrive/controls/lib/events.py:637 selfdrive/controls/lib/events.py:638
msgid "Radar Communication Issue"
msgstr "레이더 오류: 차량을 재시작하세요"
#: selfdrive/controls/lib/events.py:643 selfdrive/controls/lib/events.py:644
#: selfdrive/controls/lib/events.py:648 selfdrive/controls/lib/events.py:649
msgid "Radar Error: Restart the Car"
msgstr "레이더 오류: 차량을 재시작하세요"
#: selfdrive/controls/lib/events.py:655 selfdrive/controls/lib/events.py:659
msgid "Driving model lagging"
msgstr "주행 모델 지연"
#: selfdrive/controls/lib/events.py:663 selfdrive/controls/lib/events.py:664
#: selfdrive/controls/lib/events.py:673 selfdrive/controls/lib/events.py:674
msgid "Vision Model Output Uncertain"
msgstr "전방 영상 인식 불안"
#: selfdrive/controls/lib/events.py:668 selfdrive/controls/lib/events.py:669
#: selfdrive/controls/lib/events.py:678 selfdrive/controls/lib/events.py:679
msgid "Device Fell Off Mount"
msgstr ""
#: selfdrive/controls/lib/events.py:683 selfdrive/controls/lib/events.py:689
msgid "Low Memory: Reboot Your Device"
msgstr "메모리 부족: 장치를 재시작하세요"
#: selfdrive/controls/lib/events.py:685
msgid "RAM Critically Low"
msgstr "메모리 부족 심각"
#: selfdrive/controls/lib/events.py:694 selfdrive/controls/lib/events.py:695
msgid "Controls Failed"
msgstr "차량제어 불가"
#: selfdrive/controls/lib/events.py:699
msgid "Controls Mismatch"
msgstr ""
#: selfdrive/controls/lib/events.py:703 selfdrive/controls/lib/events.py:705
#: selfdrive/controls/lib/events.py:709
msgid "CAN Error: Check Connections"
msgstr "CAN 오류: CAN 신호를 확인하세요"
#: selfdrive/controls/lib/events.py:713 selfdrive/controls/lib/events.py:719
msgid "LKAS Fault: Restart the Car"
msgstr "LKAS 오류: 차량을 재시작하세요"
#: selfdrive/controls/lib/events.py:715
msgid "LKAS Fault: Restart the car to engage"
msgstr "LKAS 오류: 시작을 위해 차량을 재시작하세요"
#: selfdrive/controls/lib/events.py:723 selfdrive/controls/lib/events.py:729
#: selfdrive/controls/lib/events.py:807
msgid "Cruise Fault: Restart the Car"
msgstr "크루즈 오류: 차량을 재시작하세요"
#: selfdrive/controls/lib/events.py:725 selfdrive/controls/lib/events.py:803
msgid "Cruise Fault: Restart the car to engage"
msgstr "크루즈 오류: 시작을 위해 차량을 재시작하세요"
#: selfdrive/controls/lib/events.py:733
msgid "Gas Fault: Restart the Car"
msgstr "가속페달 오류: 차량을 재시작하세요"
#: selfdrive/controls/lib/events.py:734
msgid "Gas Error: Restart the Car"
msgstr "가속페달 오류: 차량을 재시작하세요"
#: selfdrive/controls/lib/events.py:738 selfdrive/controls/lib/events.py:739
msgid "Reverse Gear"
msgstr "후진 기어"
#: selfdrive/controls/lib/events.py:743
msgid "Cruise Is Off"
msgstr "크루즈 꺼짐"
#: selfdrive/controls/lib/events.py:747 selfdrive/controls/lib/events.py:748
msgid "Planner Solution Error"
msgstr ""
#: selfdrive/controls/lib/events.py:752 selfdrive/controls/lib/events.py:754
#: selfdrive/controls/lib/events.py:758
msgid "Harness Malfunction"
msgstr "하네스 오작동"
#: selfdrive/controls/lib/events.py:755
msgid "Please Check Hardware"
msgstr "장치를 점검하세요"
#: selfdrive/controls/lib/events.py:763 selfdrive/controls/lib/events.py:772
msgid "openpilot Canceled"
msgstr "오픈파일럿 시작불가"
#: selfdrive/controls/lib/events.py:764
msgid "No close lead car"
msgstr "선행차량이 없습니다"
#: selfdrive/controls/lib/events.py:767
msgid "No Close Lead Car"
msgstr "선행차량이 없습니다"
#: selfdrive/controls/lib/events.py:773
msgid "Speed too low"
msgstr "선행차량이 없습니다"
#: selfdrive/controls/lib/events.py:780 selfdrive/controls/lib/events.py:785
msgid "Speed Too High"
msgstr "속도가 너무 높습니다"
#: selfdrive/controls/lib/events.py:781
msgid "Slow down to resume operation"
msgstr "재 작동을 위해 차량의 속도를 낮추세요"
#: selfdrive/controls/lib/events.py:786
msgid "Slow down to engage"
msgstr "시작을 위해 차량의 속도를 낮추세요"
#: selfdrive/controls/lib/events.py:793
msgid "Please connect to Internet"
msgstr "인터넷에 연결하세요"
#: selfdrive/controls/lib/events.py:794
msgid "An Update Check Is Required to Engage"
msgstr "시작을 위해 업데이트를 확인해야 합니다"
#: selfdrive/controls/lib/events.py:797
msgid "Please Connect to Internet"
msgstr "인터넷에 연결하세요"
#: selfdrive/controls/lib/events.py:813
msgid "Left ALC will start in 3s"
msgstr ""
#: selfdrive/controls/lib/events.py:821
msgid "Right ALC will start in 3s"
msgstr ""
#: selfdrive/controls/lib/events.py:837
msgid "STEERING REQUIRED: Lane Keeping OFF"
msgstr ""
#: selfdrive/controls/lib/events.py:845
msgid "STEERING REQUIRED: Blinkers ON"
msgstr ""
#: selfdrive/controls/lib/events.py:853 selfdrive/controls/lib/events.py:858
msgid "Lead Car Is Moving"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,512 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-01 16:34+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Rick Lan <ricklan@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: zh-CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: selfdrive/controls/lib/events.py:151
msgid "openpilot Unavailable"
msgstr "无法使用 openpilot"
#: selfdrive/controls/lib/events.py:158 selfdrive/controls/lib/events.py:165
msgid "TAKE CONTROL IMMEDIATELY"
msgstr "即刻接管控制"
#: selfdrive/controls/lib/events.py:185 selfdrive/controls/lib/events.py:335
#: selfdrive/controls/lib/events.py:361 selfdrive/controls/lib/events.py:425
#: selfdrive/controls/lib/events.py:477 selfdrive/controls/lib/events.py:529
#: selfdrive/controls/lib/events.py:539 selfdrive/controls/lib/events.py:654
msgid "TAKE CONTROL"
msgstr "接管控制"
#: selfdrive/controls/lib/events.py:186
#, fuzzy, python-format
msgid "Steer Unavailable Below %d %s"
msgstr "横向控制暂时失效,车速低于 %d %s"
#: selfdrive/controls/lib/events.py:194
#, fuzzy, python-format
msgid "Calibration in Progress: %d%%"
msgstr "正在校准中:%d%%"
#: selfdrive/controls/lib/events.py:195
#, fuzzy, python-format
msgid "Drive Above %d %s"
msgstr "车速请高于 %d %s"
#: selfdrive/controls/lib/events.py:202
msgid "Poor GPS reception"
msgstr "GPS 讯号不良"
#: selfdrive/controls/lib/events.py:203
msgid "If sky is visible, contact support"
msgstr "如果您不在地下室/隧道,请联系客服"
#: selfdrive/controls/lib/events.py:203
msgid "Check GPS antenna placement"
msgstr "请检查 GPS 天线位置"
#: selfdrive/controls/lib/events.py:208
msgid "Cruise Mode Disabled"
msgstr "巡航模式关闭"
#: selfdrive/controls/lib/events.py:210
msgid "Main Switch Off"
msgstr "主开关已关闭"
#: selfdrive/controls/lib/events.py:220
msgid "DEBUG ALERT"
msgstr "除错用警示讯息"
#: selfdrive/controls/lib/events.py:228
msgid "Be ready to take over at any time"
msgstr "请准备好随时接管"
#: selfdrive/controls/lib/events.py:229 selfdrive/controls/lib/events.py:245
#: selfdrive/controls/lib/events.py:253 selfdrive/controls/lib/events.py:261
msgid "Always keep hands on wheel and eyes on road"
msgstr "将手放在方向盘上并持续监视路况"
#: selfdrive/controls/lib/events.py:236
msgid "WARNING: White panda is deprecated"
msgstr "注意:这个分支未经过测试"
#: selfdrive/controls/lib/events.py:237 selfdrive/controls/lib/events.py:277
msgid "Upgrade to comma two or black panda"
msgstr "请升级至 comma two 或是使用 black panda"
#: selfdrive/controls/lib/events.py:244
msgid "WARNING: This branch is not tested"
msgstr "注意:这个分支未经过测试"
#: selfdrive/controls/lib/events.py:252
msgid "Dashcam mode"
msgstr "行车记录模式"
#: selfdrive/controls/lib/events.py:260
msgid "Dashcam mode for unsupported car"
msgstr "行车记录模式 (尚未支援车种)"
#: selfdrive/controls/lib/events.py:268
msgid "Unsupported Giraffe Configuration"
msgstr "未支援的 Giraffe 设置"
#: selfdrive/controls/lib/events.py:269
msgid "Visit comma.ai/tg"
msgstr "请查阅 comma.ai/tg"
#: selfdrive/controls/lib/events.py:276
msgid "White Panda Is No Longer Supported"
msgstr "不再支持 White Panda"
#: selfdrive/controls/lib/events.py:280
msgid "White panda is no longer supported"
msgstr "不再支持 White panda"
#: selfdrive/controls/lib/events.py:285
msgid "Stock LKAS is turned on"
msgstr "原厂 LKAS 已开启"
#: selfdrive/controls/lib/events.py:286
msgid "Turn off stock LKAS to engage"
msgstr "需关闭原厂 LKAS 才能启用"
#: selfdrive/controls/lib/events.py:295
msgid "Community Feature Detected"
msgstr "检测到社群开发功能"
#: selfdrive/controls/lib/events.py:296
msgid "Enable Community Features in Developer Settings"
msgstr "请至开发人员设定裡启用社群开发功能"
#: selfdrive/controls/lib/events.py:303
msgid "Dashcam Mode"
msgstr "行车记录模式"
#: selfdrive/controls/lib/events.py:304
msgid "Car Unrecognized"
msgstr "无法辨识车款"
#: selfdrive/controls/lib/events.py:311 selfdrive/controls/lib/events.py:319
#: selfdrive/controls/lib/events.py:327
msgid "BRAKE!"
msgstr "刹车!"
#: selfdrive/controls/lib/events.py:312
msgid "Stock AEB: Risk of Collision"
msgstr "有碰撞的风险"
#: selfdrive/controls/lib/events.py:320
msgid "Stock FCW: Risk of Collision"
msgstr "有碰撞的风险"
#: selfdrive/controls/lib/events.py:328
msgid "Risk of Collision"
msgstr "有碰撞的风险"
#: selfdrive/controls/lib/events.py:336
msgid "Lane Departure Detected"
msgstr "偏离车道"
#: selfdrive/controls/lib/events.py:345
msgid "openpilot will not brake while gas pressed"
msgstr "在您踩着油门的时候 openpilot 将不会刹车"
#: selfdrive/controls/lib/events.py:353
msgid "Vehicle Parameter Identification Failed"
msgstr "车子参数识别失败"
#: selfdrive/controls/lib/events.py:362 selfdrive/controls/lib/events.py:530
#: selfdrive/controls/lib/events.py:533
msgid "Steering Temporarily Unavailable"
msgstr "横向控制暂时失效"
#: selfdrive/controls/lib/events.py:369
msgid "KEEP EYES ON ROAD: Driver Distracted"
msgstr "注意路况:驾驶分心"
#: selfdrive/controls/lib/events.py:377
msgid "KEEP EYES ON ROAD"
msgstr "注意路况"
#: selfdrive/controls/lib/events.py:378
msgid "Driver Appears Distracted"
msgstr "驾驶分心"
#: selfdrive/controls/lib/events.py:385 selfdrive/controls/lib/events.py:409
msgid "DISENGAGE IMMEDIATELY"
msgstr "立即解除"
#: selfdrive/controls/lib/events.py:386
msgid "Driver Was Distracted"
msgstr "驾驶分心"
#: selfdrive/controls/lib/events.py:393
msgid "TOUCH STEERING WHEEL: No Face Detected"
msgstr "请触碰方向盘:未侦测到驾驶面容"
#: selfdrive/controls/lib/events.py:401
msgid "TOUCH STEERING WHEEL"
msgstr "请触碰方向盘"
#: selfdrive/controls/lib/events.py:402
msgid "Driver Is Unresponsive"
msgstr "驾驶没有反应"
#: selfdrive/controls/lib/events.py:410
msgid "Driver Was Unresponsive"
msgstr "驾驶没有反应"
#: selfdrive/controls/lib/events.py:417
msgid "CHECK DRIVER FACE VISIBILITY"
msgstr "请检查驾驶面部的可见度"
#: selfdrive/controls/lib/events.py:418
msgid "Driver Monitor Model Output Uncertain"
msgstr "驾驶监控模型判断不明确"
#: selfdrive/controls/lib/events.py:426
msgid "Resume Driving Manually"
msgstr "请自行恢復驾驶"
#: selfdrive/controls/lib/events.py:433
msgid "STOPPED"
msgstr "已停止"
#: selfdrive/controls/lib/events.py:434
msgid "Press Resume to Move"
msgstr "请按 RES 继续"
#: selfdrive/controls/lib/events.py:445
msgid "Steer Left to Start Lane Change"
msgstr "请往左打方向盘切换至左车道"
#: selfdrive/controls/lib/events.py:446 selfdrive/controls/lib/events.py:454
#: selfdrive/controls/lib/events.py:462 selfdrive/controls/lib/events.py:470
#: selfdrive/controls/lib/events.py:814 selfdrive/controls/lib/events.py:822
#: selfdrive/controls/lib/events.py:830
msgid "Monitor Other Vehicles"
msgstr "请注意其它车辆"
#: selfdrive/controls/lib/events.py:453
msgid "Steer Right to Start Lane Change"
msgstr "请往右打方向盘切换至右车道"
#: selfdrive/controls/lib/events.py:461
msgid "Car Detected in Blindspot"
msgstr "盲点侦测到车辆"
#: selfdrive/controls/lib/events.py:469 selfdrive/controls/lib/events.py:829
msgid "Changing Lane"
msgstr "切换车道中"
#: selfdrive/controls/lib/events.py:478
msgid "Turn Exceeds Steering Limit"
msgstr "弯道超过横向操控限制"
#: selfdrive/controls/lib/events.py:503
msgid "Brake Hold Active"
msgstr "驻车煞车已启用"
#: selfdrive/controls/lib/events.py:508
msgid "Park Brake Engaged"
msgstr "电子驻车已启动"
#: selfdrive/controls/lib/events.py:513
msgid "Pedal Pressed During Attempt"
msgstr "启用时侦测到驾驶踩踏油门/刹车"
#: selfdrive/controls/lib/events.py:524
msgid "Enable Adaptive Cruise"
msgstr "启用自适应巡航"
#: selfdrive/controls/lib/events.py:540
msgid "Attempting Refocus: Camera Focus Invalid"
msgstr "尝试对焦:相机已失焦"
#: selfdrive/controls/lib/events.py:546
msgid "Out of Storage Space"
msgstr "存储空间不足"
#: selfdrive/controls/lib/events.py:551
msgid "Speed Too Low"
msgstr "车速过慢"
#: selfdrive/controls/lib/events.py:556 selfdrive/controls/lib/events.py:560
msgid "NEOS Update Required"
msgstr "NEOS 需要更新"
#: selfdrive/controls/lib/events.py:557
msgid "Please Wait for Update"
msgstr "更新中请稍候"
#: selfdrive/controls/lib/events.py:565 selfdrive/controls/lib/events.py:569
msgid "No Data from Device Sensors"
msgstr "未收到装置传感器数据"
#: selfdrive/controls/lib/events.py:566 selfdrive/controls/lib/events.py:579
#: selfdrive/controls/lib/events.py:686
msgid "Reboot your Device"
msgstr "请重启装置"
#: selfdrive/controls/lib/events.py:578 selfdrive/controls/lib/events.py:582
msgid "Speaker not found"
msgstr "找不到音效装置"
#: selfdrive/controls/lib/events.py:586
msgid "Distraction Level Too High"
msgstr "驾驶分心太多次"
#: selfdrive/controls/lib/events.py:590
msgid "System Overheated"
msgstr "系统过热"
#: selfdrive/controls/lib/events.py:591
msgid "System overheated"
msgstr "系统过热"
#: selfdrive/controls/lib/events.py:595 selfdrive/controls/lib/events.py:596
msgid "Gear not D"
msgstr "不在 D 档位"
#: selfdrive/controls/lib/events.py:600
msgid "Calibration Invalid: Reposition Device and Recalibrate"
msgstr "校准无效:请将装置放于新的位置并重新校准"
#: selfdrive/controls/lib/events.py:601
msgid "Calibration Invalid: Reposition Device & Recalibrate"
msgstr "校准无效:请将装置放于新的位置并重新校准"
#: selfdrive/controls/lib/events.py:605 selfdrive/controls/lib/events.py:607
msgid "Calibration in Progress"
msgstr "正在校准中"
#: selfdrive/controls/lib/events.py:611
msgid "Door Open"
msgstr "车门开启"
#: selfdrive/controls/lib/events.py:612
msgid "Door open"
msgstr "车门未关"
#: selfdrive/controls/lib/events.py:616
msgid "Seatbelt Unlatched"
msgstr "安全带未繫"
#: selfdrive/controls/lib/events.py:617
msgid "Seatbelt unlatched"
msgstr "安全带未繫"
#: selfdrive/controls/lib/events.py:621 selfdrive/controls/lib/events.py:622
msgid "ESP Off"
msgstr "ESP 关闭"
#: selfdrive/controls/lib/events.py:626 selfdrive/controls/lib/events.py:627
msgid "Low Battery"
msgstr "电量过低"
#: selfdrive/controls/lib/events.py:631 selfdrive/controls/lib/events.py:632
msgid "Communication Issue between Processes"
msgstr "行程间出现通讯问题"
#: selfdrive/controls/lib/events.py:637 selfdrive/controls/lib/events.py:638
msgid "Radar Communication Issue"
msgstr "雷达通讯出现问题"
#: selfdrive/controls/lib/events.py:643 selfdrive/controls/lib/events.py:644
#: selfdrive/controls/lib/events.py:648 selfdrive/controls/lib/events.py:649
msgid "Radar Error: Restart the Car"
msgstr "雷达讯号错误:请重新发动车辆"
#: selfdrive/controls/lib/events.py:655 selfdrive/controls/lib/events.py:659
msgid "Driving model lagging"
msgstr "操控模型有延迟"
#: selfdrive/controls/lib/events.py:663 selfdrive/controls/lib/events.py:664
#: selfdrive/controls/lib/events.py:673 selfdrive/controls/lib/events.py:674
msgid "Vision Model Output Uncertain"
msgstr "视觉模型判断不明确"
#: selfdrive/controls/lib/events.py:668 selfdrive/controls/lib/events.py:669
#: selfdrive/controls/lib/events.py:678 selfdrive/controls/lib/events.py:679
msgid "Device Fell Off Mount"
msgstr "装置掉落侦测"
#: selfdrive/controls/lib/events.py:683 selfdrive/controls/lib/events.py:689
msgid "Low Memory: Reboot Your Device"
msgstr "记忆体不足:请重启您的装置"
#: selfdrive/controls/lib/events.py:685
msgid "RAM Critically Low"
msgstr "记忆体严重不足"
#: selfdrive/controls/lib/events.py:694 selfdrive/controls/lib/events.py:695
msgid "Controls Failed"
msgstr "控制发生错误"
#: selfdrive/controls/lib/events.py:699
msgid "Controls Mismatch"
msgstr "控制不匹配"
#: selfdrive/controls/lib/events.py:703 selfdrive/controls/lib/events.py:705
#: selfdrive/controls/lib/events.py:709
msgid "CAN Error: Check Connections"
msgstr "CAN 讯号错误:请检查线路"
#: selfdrive/controls/lib/events.py:713 selfdrive/controls/lib/events.py:719
msgid "LKAS Fault: Restart the Car"
msgstr "LKAS 错误:请重新发动车辆"
#: selfdrive/controls/lib/events.py:715
msgid "LKAS Fault: Restart the car to engage"
msgstr "LKAS 错误:请重新发动车辆"
#: selfdrive/controls/lib/events.py:723 selfdrive/controls/lib/events.py:729
#: selfdrive/controls/lib/events.py:807
msgid "Cruise Fault: Restart the Car"
msgstr "巡航系统错误:请重新发动车辆"
#: selfdrive/controls/lib/events.py:725 selfdrive/controls/lib/events.py:803
msgid "Cruise Fault: Restart the car to engage"
msgstr "巡航系统错误:请重新发动车辆"
#: selfdrive/controls/lib/events.py:733
msgid "Gas Fault: Restart the Car"
msgstr "油门错误:请重新发动车辆"
#: selfdrive/controls/lib/events.py:734
msgid "Gas Error: Restart the Car"
msgstr "油门错误:请重新发动车辆"
#: selfdrive/controls/lib/events.py:738 selfdrive/controls/lib/events.py:739
msgid "Reverse Gear"
msgstr "切换至倒车档"
#: selfdrive/controls/lib/events.py:743
msgid "Cruise Is Off"
msgstr "巡航系统关闭"
#: selfdrive/controls/lib/events.py:747 selfdrive/controls/lib/events.py:748
msgid "Planner Solution Error"
msgstr "Planner Solution 错误"
#: selfdrive/controls/lib/events.py:752 selfdrive/controls/lib/events.py:754
#: selfdrive/controls/lib/events.py:758
msgid "Harness Malfunction"
msgstr "Harness 故障"
#: selfdrive/controls/lib/events.py:755
msgid "Please Check Hardware"
msgstr "请检查硬体"
#: selfdrive/controls/lib/events.py:763 selfdrive/controls/lib/events.py:772
msgid "openpilot Canceled"
msgstr "openpilot 已取消"
#: selfdrive/controls/lib/events.py:764
msgid "No close lead car"
msgstr "前方没有车辆"
#: selfdrive/controls/lib/events.py:767
msgid "No Close Lead Car"
msgstr "前方没有车辆"
#: selfdrive/controls/lib/events.py:773
msgid "Speed too low"
msgstr "车速过慢"
#: selfdrive/controls/lib/events.py:780 selfdrive/controls/lib/events.py:785
msgid "Speed Too High"
msgstr "车速过快"
#: selfdrive/controls/lib/events.py:781
msgid "Slow down to resume operation"
msgstr "请减速后再启用"
#: selfdrive/controls/lib/events.py:786
msgid "Slow down to engage"
msgstr "请减速后再启用"
#: selfdrive/controls/lib/events.py:793
msgid "Please connect to Internet"
msgstr "请连接网路"
#: selfdrive/controls/lib/events.py:794
msgid "An Update Check Is Required to Engage"
msgstr "需检查更新后才能启用"
#: selfdrive/controls/lib/events.py:797
msgid "Please Connect to Internet"
msgstr "请连接网路"
#: selfdrive/controls/lib/events.py:813
msgid "Left ALC will start in 3s"
msgstr "准备自动切至左车道"
#: selfdrive/controls/lib/events.py:821
msgid "Right ALC will start in 3s"
msgstr "准备自动切至右车道"
#: selfdrive/controls/lib/events.py:837
msgid "STEERING REQUIRED: Lane Keeping OFF"
msgstr "请接管方向盘:车道维持关闭"
#: selfdrive/controls/lib/events.py:845
msgid "STEERING REQUIRED: Blinkers ON"
msgstr "请接管方向盘:方向灯开启"
#: selfdrive/controls/lib/events.py:853 selfdrive/controls/lib/events.py:858
msgid "Lead Car Is Moving"
msgstr "前方车辆车移动中"

Binary file not shown.

View File

@@ -0,0 +1,512 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-01 16:34+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Rick Lan <ricklan@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: zh-TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: selfdrive/controls/lib/events.py:151
msgid "openpilot Unavailable"
msgstr "無法使用 openpilot"
#: selfdrive/controls/lib/events.py:158 selfdrive/controls/lib/events.py:165
msgid "TAKE CONTROL IMMEDIATELY"
msgstr "即刻接管控制"
#: selfdrive/controls/lib/events.py:185 selfdrive/controls/lib/events.py:335
#: selfdrive/controls/lib/events.py:361 selfdrive/controls/lib/events.py:425
#: selfdrive/controls/lib/events.py:477 selfdrive/controls/lib/events.py:529
#: selfdrive/controls/lib/events.py:539 selfdrive/controls/lib/events.py:654
msgid "TAKE CONTROL"
msgstr "接管控制"
#: selfdrive/controls/lib/events.py:186
#, fuzzy, python-format
msgid "Steer Unavailable Below %d %s"
msgstr "橫向控制暫時失效,車速低於 %d %s"
#: selfdrive/controls/lib/events.py:194
#, fuzzy, python-format
msgid "Calibration in Progress: %d%%"
msgstr "正在校準中:%d%%"
#: selfdrive/controls/lib/events.py:195
#, fuzzy, python-format
msgid "Drive Above %d %s"
msgstr "車速請高於 %d %s"
#: selfdrive/controls/lib/events.py:202
msgid "Poor GPS reception"
msgstr "GPS 訊號不良"
#: selfdrive/controls/lib/events.py:203
msgid "If sky is visible, contact support"
msgstr "如果您不在地下室/隧道,請聯系客服"
#: selfdrive/controls/lib/events.py:203
msgid "Check GPS antenna placement"
msgstr "請檢查 GPS 天線位置"
#: selfdrive/controls/lib/events.py:208
msgid "Cruise Mode Disabled"
msgstr "巡航模式關閉"
#: selfdrive/controls/lib/events.py:210
msgid "Main Switch Off"
msgstr "主開關已關閉"
#: selfdrive/controls/lib/events.py:220
msgid "DEBUG ALERT"
msgstr "除錯用警示訊息"
#: selfdrive/controls/lib/events.py:228
msgid "Be ready to take over at any time"
msgstr "請準備好隨時接管"
#: selfdrive/controls/lib/events.py:229 selfdrive/controls/lib/events.py:245
#: selfdrive/controls/lib/events.py:253 selfdrive/controls/lib/events.py:261
msgid "Always keep hands on wheel and eyes on road"
msgstr "將手放在方向盤上並持續監視路況"
#: selfdrive/controls/lib/events.py:236
msgid "WARNING: White panda is deprecated"
msgstr "注意:這個分支未經過測試"
#: selfdrive/controls/lib/events.py:237 selfdrive/controls/lib/events.py:277
msgid "Upgrade to comma two or black panda"
msgstr "請升級至 comma two 或是使用 black panda"
#: selfdrive/controls/lib/events.py:244
msgid "WARNING: This branch is not tested"
msgstr "注意:這個分支未經過測試"
#: selfdrive/controls/lib/events.py:252
msgid "Dashcam mode"
msgstr "行車記錄模式"
#: selfdrive/controls/lib/events.py:260
msgid "Dashcam mode for unsupported car"
msgstr "行車記錄模式 (尚未支援車種)"
#: selfdrive/controls/lib/events.py:268
msgid "Unsupported Giraffe Configuration"
msgstr "未支援的 Giraffe 設置"
#: selfdrive/controls/lib/events.py:269
msgid "Visit comma.ai/tg"
msgstr "請查閱 comma.ai/tg"
#: selfdrive/controls/lib/events.py:276
msgid "White Panda Is No Longer Supported"
msgstr "不再支援 White Panda"
#: selfdrive/controls/lib/events.py:280
msgid "White panda is no longer supported"
msgstr "不再支援 White panda"
#: selfdrive/controls/lib/events.py:285
msgid "Stock LKAS is turned on"
msgstr "原廠 LKAS 已開啟"
#: selfdrive/controls/lib/events.py:286
msgid "Turn off stock LKAS to engage"
msgstr "需關閉原廠 LKAS 才能啟用"
#: selfdrive/controls/lib/events.py:295
msgid "Community Feature Detected"
msgstr "檢測到社群開發功能"
#: selfdrive/controls/lib/events.py:296
msgid "Enable Community Features in Developer Settings"
msgstr "請至開發人員設定裡啟用社群開發功能"
#: selfdrive/controls/lib/events.py:303
msgid "Dashcam Mode"
msgstr "行車記錄模式"
#: selfdrive/controls/lib/events.py:304
msgid "Car Unrecognized"
msgstr "無法辨識車款"
#: selfdrive/controls/lib/events.py:311 selfdrive/controls/lib/events.py:319
#: selfdrive/controls/lib/events.py:327
msgid "BRAKE!"
msgstr "剎車!"
#: selfdrive/controls/lib/events.py:312
msgid "Stock AEB: Risk of Collision"
msgstr "有碰撞的風險"
#: selfdrive/controls/lib/events.py:320
msgid "Stock FCW: Risk of Collision"
msgstr "有碰撞的風險"
#: selfdrive/controls/lib/events.py:328
msgid "Risk of Collision"
msgstr "有碰撞的風險"
#: selfdrive/controls/lib/events.py:336
msgid "Lane Departure Detected"
msgstr "偏離車道"
#: selfdrive/controls/lib/events.py:345
msgid "openpilot will not brake while gas pressed"
msgstr "在您踩著油門的時候 openpilot 將不會剎車"
#: selfdrive/controls/lib/events.py:353
msgid "Vehicle Parameter Identification Failed"
msgstr "車子參數識別失敗"
#: selfdrive/controls/lib/events.py:362 selfdrive/controls/lib/events.py:530
#: selfdrive/controls/lib/events.py:533
msgid "Steering Temporarily Unavailable"
msgstr "橫向控制暫時失效"
#: selfdrive/controls/lib/events.py:369
msgid "KEEP EYES ON ROAD: Driver Distracted"
msgstr "注意路況:駕駛分心"
#: selfdrive/controls/lib/events.py:377
msgid "KEEP EYES ON ROAD"
msgstr "注意路況"
#: selfdrive/controls/lib/events.py:378
msgid "Driver Appears Distracted"
msgstr "駕駛分心"
#: selfdrive/controls/lib/events.py:385 selfdrive/controls/lib/events.py:409
msgid "DISENGAGE IMMEDIATELY"
msgstr "立即解除"
#: selfdrive/controls/lib/events.py:386
msgid "Driver Was Distracted"
msgstr "駕駛分心"
#: selfdrive/controls/lib/events.py:393
msgid "TOUCH STEERING WHEEL: No Face Detected"
msgstr "請觸碰方向盤:未偵測到駕駛面容"
#: selfdrive/controls/lib/events.py:401
msgid "TOUCH STEERING WHEEL"
msgstr "請觸碰方向盤"
#: selfdrive/controls/lib/events.py:402
msgid "Driver Is Unresponsive"
msgstr "駕駛沒有反應"
#: selfdrive/controls/lib/events.py:410
msgid "Driver Was Unresponsive"
msgstr "駕駛沒有反應"
#: selfdrive/controls/lib/events.py:417
msgid "CHECK DRIVER FACE VISIBILITY"
msgstr "請檢查駕駛面部的可見度"
#: selfdrive/controls/lib/events.py:418
msgid "Driver Monitor Model Output Uncertain"
msgstr "駕駛監控模型判斷不明確"
#: selfdrive/controls/lib/events.py:426
msgid "Resume Driving Manually"
msgstr "請自行恢復駕駛"
#: selfdrive/controls/lib/events.py:433
msgid "STOPPED"
msgstr "已停止"
#: selfdrive/controls/lib/events.py:434
msgid "Press Resume to Move"
msgstr "請按 RES 繼續"
#: selfdrive/controls/lib/events.py:445
msgid "Steer Left to Start Lane Change"
msgstr "請往左打方向盤切換至左車道"
#: selfdrive/controls/lib/events.py:446 selfdrive/controls/lib/events.py:454
#: selfdrive/controls/lib/events.py:462 selfdrive/controls/lib/events.py:470
#: selfdrive/controls/lib/events.py:814 selfdrive/controls/lib/events.py:822
#: selfdrive/controls/lib/events.py:830
msgid "Monitor Other Vehicles"
msgstr "請注意其它車輛"
#: selfdrive/controls/lib/events.py:453
msgid "Steer Right to Start Lane Change"
msgstr "請往右打方向盤切換至右車道"
#: selfdrive/controls/lib/events.py:461
msgid "Car Detected in Blindspot"
msgstr "盲點偵測到車輛"
#: selfdrive/controls/lib/events.py:469 selfdrive/controls/lib/events.py:829
msgid "Changing Lane"
msgstr "切換車道中"
#: selfdrive/controls/lib/events.py:478
msgid "Turn Exceeds Steering Limit"
msgstr "彎道超過橫向操控限制"
#: selfdrive/controls/lib/events.py:503
msgid "Brake Hold Active"
msgstr "駐車煞車已啟用"
#: selfdrive/controls/lib/events.py:508
msgid "Park Brake Engaged"
msgstr "電子駐車已啟動"
#: selfdrive/controls/lib/events.py:513
msgid "Pedal Pressed During Attempt"
msgstr "啟用時偵測到駕駛踩踏油門/剎車"
#: selfdrive/controls/lib/events.py:524
msgid "Enable Adaptive Cruise"
msgstr "啟用主動定速巡航"
#: selfdrive/controls/lib/events.py:540
msgid "Attempting Refocus: Camera Focus Invalid"
msgstr "嘗試對焦:相機已失焦"
#: selfdrive/controls/lib/events.py:546
msgid "Out of Storage Space"
msgstr "儲存空間不足"
#: selfdrive/controls/lib/events.py:551
msgid "Speed Too Low"
msgstr "車速過慢"
#: selfdrive/controls/lib/events.py:556 selfdrive/controls/lib/events.py:560
msgid "NEOS Update Required"
msgstr "NEOS 需要更新"
#: selfdrive/controls/lib/events.py:557
msgid "Please Wait for Update"
msgstr "更新中請稍候"
#: selfdrive/controls/lib/events.py:565 selfdrive/controls/lib/events.py:569
msgid "No Data from Device Sensors"
msgstr "未收到裝置傳感器數據"
#: selfdrive/controls/lib/events.py:566 selfdrive/controls/lib/events.py:579
#: selfdrive/controls/lib/events.py:686
msgid "Reboot your Device"
msgstr "請重啟裝置"
#: selfdrive/controls/lib/events.py:578 selfdrive/controls/lib/events.py:582
msgid "Speaker not found"
msgstr "找不到音效裝置"
#: selfdrive/controls/lib/events.py:586
msgid "Distraction Level Too High"
msgstr "駕駛分心太多次"
#: selfdrive/controls/lib/events.py:590
msgid "System Overheated"
msgstr "系統過熱"
#: selfdrive/controls/lib/events.py:591
msgid "System overheated"
msgstr "系統過熱"
#: selfdrive/controls/lib/events.py:595 selfdrive/controls/lib/events.py:596
msgid "Gear not D"
msgstr "不在 D 檔位"
#: selfdrive/controls/lib/events.py:600
msgid "Calibration Invalid: Reposition Device and Recalibrate"
msgstr "校準無效:請將裝置放於新的位置並重新校準"
#: selfdrive/controls/lib/events.py:601
msgid "Calibration Invalid: Reposition Device & Recalibrate"
msgstr "校準無效:請將裝置放於新的位置並重新校準"
#: selfdrive/controls/lib/events.py:605 selfdrive/controls/lib/events.py:607
msgid "Calibration in Progress"
msgstr "正在校準中"
#: selfdrive/controls/lib/events.py:611
msgid "Door Open"
msgstr "車門開啟"
#: selfdrive/controls/lib/events.py:612
msgid "Door open"
msgstr "車門未關"
#: selfdrive/controls/lib/events.py:616
msgid "Seatbelt Unlatched"
msgstr "安全帶未繫"
#: selfdrive/controls/lib/events.py:617
msgid "Seatbelt unlatched"
msgstr "安全帶未繫"
#: selfdrive/controls/lib/events.py:621 selfdrive/controls/lib/events.py:622
msgid "ESP Off"
msgstr "ESP 關閉"
#: selfdrive/controls/lib/events.py:626 selfdrive/controls/lib/events.py:627
msgid "Low Battery"
msgstr "電量過低"
#: selfdrive/controls/lib/events.py:631 selfdrive/controls/lib/events.py:632
msgid "Communication Issue between Processes"
msgstr "行程間出現通訊問題"
#: selfdrive/controls/lib/events.py:637 selfdrive/controls/lib/events.py:638
msgid "Radar Communication Issue"
msgstr "雷達通訊出現問題"
#: selfdrive/controls/lib/events.py:643 selfdrive/controls/lib/events.py:644
#: selfdrive/controls/lib/events.py:648 selfdrive/controls/lib/events.py:649
msgid "Radar Error: Restart the Car"
msgstr "雷達訊號錯誤:請重新發動車輛"
#: selfdrive/controls/lib/events.py:655 selfdrive/controls/lib/events.py:659
msgid "Driving model lagging"
msgstr "操控模型有延遲"
#: selfdrive/controls/lib/events.py:663 selfdrive/controls/lib/events.py:664
#: selfdrive/controls/lib/events.py:673 selfdrive/controls/lib/events.py:674
msgid "Vision Model Output Uncertain"
msgstr "視覺模型判斷不明確"
#: selfdrive/controls/lib/events.py:668 selfdrive/controls/lib/events.py:669
#: selfdrive/controls/lib/events.py:678 selfdrive/controls/lib/events.py:679
msgid "Device Fell Off Mount"
msgstr "裝置掉落偵測"
#: selfdrive/controls/lib/events.py:683 selfdrive/controls/lib/events.py:689
msgid "Low Memory: Reboot Your Device"
msgstr "記憶體不足:請重啟您的裝置"
#: selfdrive/controls/lib/events.py:685
msgid "RAM Critically Low"
msgstr "記憶體嚴重不足"
#: selfdrive/controls/lib/events.py:694 selfdrive/controls/lib/events.py:695
msgid "Controls Failed"
msgstr "控制發生錯誤"
#: selfdrive/controls/lib/events.py:699
msgid "Controls Mismatch"
msgstr "控制不匹配"
#: selfdrive/controls/lib/events.py:703 selfdrive/controls/lib/events.py:705
#: selfdrive/controls/lib/events.py:709
msgid "CAN Error: Check Connections"
msgstr "CAN 訊號錯誤:請檢查線路"
#: selfdrive/controls/lib/events.py:713 selfdrive/controls/lib/events.py:719
msgid "LKAS Fault: Restart the Car"
msgstr "LKAS 錯誤:請重新發動車輛"
#: selfdrive/controls/lib/events.py:715
msgid "LKAS Fault: Restart the car to engage"
msgstr "LKAS 錯誤:請重新發動車輛"
#: selfdrive/controls/lib/events.py:723 selfdrive/controls/lib/events.py:729
#: selfdrive/controls/lib/events.py:807
msgid "Cruise Fault: Restart the Car"
msgstr "巡航系統錯誤:請重新發動車輛"
#: selfdrive/controls/lib/events.py:725 selfdrive/controls/lib/events.py:803
msgid "Cruise Fault: Restart the car to engage"
msgstr "巡航系統錯誤:請重新發動車輛"
#: selfdrive/controls/lib/events.py:733
msgid "Gas Fault: Restart the Car"
msgstr "油門錯誤:請重新發動車輛"
#: selfdrive/controls/lib/events.py:734
msgid "Gas Error: Restart the Car"
msgstr "油門錯誤:請重新發動車輛"
#: selfdrive/controls/lib/events.py:738 selfdrive/controls/lib/events.py:739
msgid "Reverse Gear"
msgstr "切換至倒車檔"
#: selfdrive/controls/lib/events.py:743
msgid "Cruise Is Off"
msgstr "巡航系統關閉"
#: selfdrive/controls/lib/events.py:747 selfdrive/controls/lib/events.py:748
msgid "Planner Solution Error"
msgstr "Planner Solution 錯誤"
#: selfdrive/controls/lib/events.py:752 selfdrive/controls/lib/events.py:754
#: selfdrive/controls/lib/events.py:758
msgid "Harness Malfunction"
msgstr "Harness 故障"
#: selfdrive/controls/lib/events.py:755
msgid "Please Check Hardware"
msgstr "請檢查硬體"
#: selfdrive/controls/lib/events.py:763 selfdrive/controls/lib/events.py:772
msgid "openpilot Canceled"
msgstr "openpilot 已取消"
#: selfdrive/controls/lib/events.py:764
msgid "No close lead car"
msgstr "前方沒有車輛"
#: selfdrive/controls/lib/events.py:767
msgid "No Close Lead Car"
msgstr "前方沒有車輛"
#: selfdrive/controls/lib/events.py:773
msgid "Speed too low"
msgstr "車速過慢"
#: selfdrive/controls/lib/events.py:780 selfdrive/controls/lib/events.py:785
msgid "Speed Too High"
msgstr "車速過快"
#: selfdrive/controls/lib/events.py:781
msgid "Slow down to resume operation"
msgstr "請減速後再啟用"
#: selfdrive/controls/lib/events.py:786
msgid "Slow down to engage"
msgstr "請減速後再啟用"
#: selfdrive/controls/lib/events.py:793
msgid "Please connect to Internet"
msgstr "請連接網路"
#: selfdrive/controls/lib/events.py:794
msgid "An Update Check Is Required to Engage"
msgstr "需檢查更新後才能啟用"
#: selfdrive/controls/lib/events.py:797
msgid "Please Connect to Internet"
msgstr "請連接網路"
#: selfdrive/controls/lib/events.py:813
msgid "Left ALC will start in 3s"
msgstr "準備自動切至左車道"
#: selfdrive/controls/lib/events.py:821
msgid "Right ALC will start in 3s"
msgstr "準備自動切至右車道"
#: selfdrive/controls/lib/events.py:837
msgid "STEERING REQUIRED: Lane Keeping OFF"
msgstr "請接管方向盤:車道維持關閉"
#: selfdrive/controls/lib/events.py:845
msgid "STEERING REQUIRED: Blinkers ON"
msgstr "請接管方向盤:方向燈開啟"
#: selfdrive/controls/lib/events.py:853 selfdrive/controls/lib/events.py:858
msgid "Lead Car Is Moving"
msgstr "前方車輛車移動中"

View File

@@ -1,9 +1,12 @@
Import('env', 'common', 'cereal', 'messaging')
env.Program('boardd.cc', LIBS=['usb-1.0', common, cereal, messaging, 'pthread', 'zmq', 'capnp', 'kj'])
Import('env', 'common', 'cereal', 'messaging', 'cython_dependencies')
# dp - Add read dp_disable_relay value
if FindFile('dp_disable_relay', '/data/params/d') != None:
with open('/data/params/d/dp_disable_relay') as f:
if (int(f.read())) == 1:
env.Append(CCFLAGS='-DDisableRelay')
env.Program('boardd', ['boardd.cc', 'panda.cc'], LIBS=['usb-1.0', common, cereal, messaging, 'pthread', 'zmq', 'capnp', 'kj'])
env.Library('libcan_list_to_can_capnp', ['can_list_to_can_capnp.cc'])
env.Command(['boardd_api_impl.so'],
['libcan_list_to_can_capnp.a', 'boardd_api_impl.pyx', 'boardd_setup.py'],
"cd selfdrive/boardd && python3 boardd_setup.py build_ext --inplace")
env.Command(['boardd_api_impl.so', 'boardd_api_impl.cpp'],
cython_dependencies + ['libcan_list_to_can_capnp.a', 'boardd_api_impl.pyx', 'boardd_setup.py'],
"cd selfdrive/boardd && python3 boardd_setup.py build_ext --inplace")

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,8 @@
import subprocess
from distutils.core import Extension, setup
from Cython.Build import cythonize
from common.cython_hacks import BuildExtWithoutPlatformSuffix
from common.basedir import BASEDIR
import os
PHONELIBS = os.path.join(BASEDIR, 'phonelibs')
ARCH = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
libraries = ['can_list_to_can_capnp', 'capnp', 'kj']
setup(name='Boardd API Implementation',

322
selfdrive/boardd/panda.cc Normal file
View File

@@ -0,0 +1,322 @@
#include <stdexcept>
#include <cassert>
#include <iostream>
#include "common/swaglog.h"
#include "panda.h"
Panda::Panda(){
int err;
err = pthread_mutex_init(&usb_lock, NULL);
if (err != 0) { goto fail; }
// init libusb
err = libusb_init(&ctx);
if (err != 0) { goto fail; }
#if LIBUSB_API_VERSION >= 0x01000106
libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_INFO);
#else
libusb_set_debug(ctx, 3);
#endif
dev_handle = libusb_open_device_with_vid_pid(ctx, 0xbbaa, 0xddcc);
if (dev_handle == NULL) { goto fail; }
if (libusb_kernel_driver_active(dev_handle, 0) == 1) {
libusb_detach_kernel_driver(dev_handle, 0);
}
err = libusb_set_configuration(dev_handle, 1);
if (err != 0) { goto fail; }
err = libusb_claim_interface(dev_handle, 0);
if (err != 0) { goto fail; }
hw_type = get_hw_type();
is_pigeon =
(hw_type == cereal::HealthData::HwType::GREY_PANDA) ||
(hw_type == cereal::HealthData::HwType::BLACK_PANDA) ||
(hw_type == cereal::HealthData::HwType::UNO);
has_rtc = (hw_type == cereal::HealthData::HwType::UNO);
return;
fail:
cleanup();
throw std::runtime_error("Error connecting to panda");
}
Panda::~Panda(){
pthread_mutex_lock(&usb_lock);
cleanup();
connected = false;
pthread_mutex_unlock(&usb_lock);
}
void Panda::cleanup(){
if (dev_handle){
libusb_release_interface(dev_handle, 0);
libusb_close(dev_handle);
}
if (ctx) {
libusb_exit(ctx);
}
}
void Panda::handle_usb_issue(int err, const char func[]) {
LOGE_100("usb error %d \"%s\" in %s", err, libusb_strerror((enum libusb_error)err), func);
if (err == LIBUSB_ERROR_NO_DEVICE) {
LOGE("lost connection");
connected = false;
}
// TODO: check other errors, is simply retrying okay?
}
int Panda::usb_write(uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned int timeout) {
int err;
const uint8_t bmRequestType = LIBUSB_ENDPOINT_OUT | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE;
pthread_mutex_lock(&usb_lock);
do {
err = libusb_control_transfer(dev_handle, bmRequestType, bRequest, wValue, wIndex, NULL, 0, timeout);
if (err < 0) handle_usb_issue(err, __func__);
} while (err < 0 && connected);
pthread_mutex_unlock(&usb_lock);
return err;
}
int Panda::usb_read(uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout) {
int err;
const uint8_t bmRequestType = LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE;
pthread_mutex_lock(&usb_lock);
do {
err = libusb_control_transfer(dev_handle, bmRequestType, bRequest, wValue, wIndex, data, wLength, timeout);
if (err < 0) handle_usb_issue(err, __func__);
} while (err < 0 && connected);
pthread_mutex_unlock(&usb_lock);
return err;
}
int Panda::usb_bulk_write(unsigned char endpoint, unsigned char* data, int length, unsigned int timeout) {
int err;
int transferred = 0;
pthread_mutex_lock(&usb_lock);
do {
// Try sending can messages. If the receive buffer on the panda is full it will NAK
// and libusb will try again. After 5ms, it will time out. We will drop the messages.
err = libusb_bulk_transfer(dev_handle, endpoint, data, length, &transferred, timeout);
if (err == LIBUSB_ERROR_TIMEOUT) {
LOGW("Transmit buffer full");
break;
} else if (err != 0 || length != transferred) {
handle_usb_issue(err, __func__);
}
} while(err != 0 && connected);
pthread_mutex_unlock(&usb_lock);
return transferred;
}
int Panda::usb_bulk_read(unsigned char endpoint, unsigned char* data, int length, unsigned int timeout) {
int err;
int transferred = 0;
pthread_mutex_lock(&usb_lock);
do {
err = libusb_bulk_transfer(dev_handle, endpoint, data, length, &transferred, timeout);
if (err == LIBUSB_ERROR_TIMEOUT) {
break; // timeout is okay to exit, recv still happened
} else if (err == LIBUSB_ERROR_OVERFLOW) {
LOGE_100("overflow got 0x%x", transferred);
} else if (err != 0) {
handle_usb_issue(err, __func__);
}
} while(err != 0 && connected);
pthread_mutex_unlock(&usb_lock);
return transferred;
}
void Panda::set_safety_model(cereal::CarParams::SafetyModel safety_model, int safety_param){
usb_write(0xdc, (uint16_t)safety_model, safety_param);
}
void Panda::set_unsafe_mode(){
usb_write(0xdf, 9, 0);
}
cereal::HealthData::HwType Panda::get_hw_type() {
unsigned char hw_query[1] = {0};
usb_read(0xc1, 0, 0, hw_query, 1);
return (cereal::HealthData::HwType)(hw_query[0]);
}
void Panda::set_rtc(struct tm sys_time){
// tm struct has year defined as years since 1900
usb_write(0xa1, (uint16_t)(1900 + sys_time.tm_year), 0);
usb_write(0xa2, (uint16_t)(1 + sys_time.tm_mon), 0);
usb_write(0xa3, (uint16_t)sys_time.tm_mday, 0);
// usb_write(0xa4, (uint16_t)(1 + sys_time.tm_wday), 0);
usb_write(0xa5, (uint16_t)sys_time.tm_hour, 0);
usb_write(0xa6, (uint16_t)sys_time.tm_min, 0);
usb_write(0xa7, (uint16_t)sys_time.tm_sec, 0);
}
struct tm Panda::get_rtc(){
struct __attribute__((packed)) timestamp_t {
uint16_t year; // Starts at 0
uint8_t month;
uint8_t day;
uint8_t weekday;
uint8_t hour;
uint8_t minute;
uint8_t second;
} rtc_time = {0};
usb_read(0xa0, 0, 0, (unsigned char*)&rtc_time, sizeof(rtc_time));
struct tm new_time = { 0 };
new_time.tm_year = rtc_time.year - 1900; // tm struct has year defined as years since 1900
new_time.tm_mon = rtc_time.month - 1;
new_time.tm_mday = rtc_time.day;
new_time.tm_hour = rtc_time.hour;
new_time.tm_min = rtc_time.minute;
new_time.tm_sec = rtc_time.second;
return new_time;
}
void Panda::set_fan_speed(uint16_t fan_speed){
usb_write(0xb1, fan_speed, 0);
}
uint16_t Panda::get_fan_speed(){
uint16_t fan_speed_rpm = 0;
usb_read(0xb2, 0, 0, (unsigned char*)&fan_speed_rpm, sizeof(fan_speed_rpm));
return fan_speed_rpm;
}
void Panda::set_ir_pwr(uint16_t ir_pwr) {
usb_write(0xb0, ir_pwr, 0);
}
health_t Panda::get_health(){
health_t health {0};
usb_read(0xd2, 0, 0, (unsigned char*)&health, sizeof(health));
return health;
}
void Panda::set_loopback(bool loopback){
usb_write(0xe5, loopback, 0);
}
const char* Panda::get_firmware_version(){
const char* fw_sig_buf = new char[128]();
int read_1 = usb_read(0xd3, 0, 0, (unsigned char*)fw_sig_buf, 64);
int read_2 = usb_read(0xd4, 0, 0, (unsigned char*)fw_sig_buf + 64, 64);
if ((read_1 == 64) && (read_2 == 64)) {
return fw_sig_buf;
}
delete[] fw_sig_buf;
return NULL;
}
const char* Panda::get_serial(){
const char* serial_buf = new char[16]();
int err = usb_read(0xd0, 0, 0, (unsigned char*)serial_buf, 16);
if (err >= 0) {
return serial_buf;
}
delete[] serial_buf;
return NULL;
}
void Panda::set_power_saving(bool power_saving){
usb_write(0xe7, power_saving, 0);
}
void Panda::set_usb_power_mode(cereal::HealthData::UsbPowerMode power_mode){
usb_write(0xe6, (uint16_t)power_mode, 0);
}
void Panda::send_heartbeat(){
usb_write(0xf3, 1, 0);
}
void Panda::can_send(capnp::List<cereal::CanData>::Reader can_data_list){
int msg_count = can_data_list.size();
uint32_t *send = new uint32_t[msg_count*0x10]();
for (int i = 0; i < msg_count; i++) {
auto cmsg = can_data_list[i];
if (cmsg.getAddress() >= 0x800) { // extended
send[i*4] = (cmsg.getAddress() << 3) | 5;
} else { // normal
send[i*4] = (cmsg.getAddress() << 21) | 1;
}
auto can_data = cmsg.getDat();
assert(can_data.size() <= 8);
send[i*4+1] = can_data.size() | (cmsg.getSrc() << 4);
memcpy(&send[i*4+2], can_data.begin(), can_data.size());
}
usb_bulk_write(3, (unsigned char*)send, msg_count*0x10, 5);
delete[] send;
}
int Panda::can_receive(cereal::Event::Builder &event){
uint32_t data[RECV_SIZE/4];
int recv = usb_bulk_read(0x81, (unsigned char*)data, RECV_SIZE);
// return if length is 0
if (recv <= 0) {
return 0;
} else if (recv == RECV_SIZE) {
LOGW("Receive buffer full");
}
size_t num_msg = recv / 0x10;
auto canData = event.initCan(num_msg);
// populate message
for (int i = 0; i < num_msg; i++) {
if (data[i*4] & 4) {
// extended
canData[i].setAddress(data[i*4] >> 3);
//printf("got extended: %x\n", data[i*4] >> 3);
} else {
// normal
canData[i].setAddress(data[i*4] >> 21);
}
canData[i].setBusTime(data[i*4+1] >> 16);
int len = data[i*4+1]&0xF;
canData[i].setDat(kj::arrayPtr((uint8_t*)&data[i*4+2], len));
canData[i].setSrc((data[i*4+1] >> 4) & 0xff);
}
return recv;
}

79
selfdrive/boardd/panda.h Normal file
View File

@@ -0,0 +1,79 @@
#pragma once
#include <ctime>
#include <cstdint>
#include <pthread.h>
#include <libusb-1.0/libusb.h>
#include "cereal/gen/cpp/car.capnp.h"
#include "cereal/gen/cpp/log.capnp.h"
// double the FIFO size
#define RECV_SIZE (0x1000)
#define TIMEOUT 0
// copied from panda/board/main.c
struct __attribute__((packed)) health_t {
uint32_t uptime;
uint32_t voltage;
uint32_t current;
uint32_t can_rx_errs;
uint32_t can_send_errs;
uint32_t can_fwd_errs;
uint32_t gmlan_send_errs;
uint32_t faults;
uint8_t ignition_line;
uint8_t ignition_can;
uint8_t controls_allowed;
uint8_t gas_interceptor_detected;
uint8_t car_harness_status;
uint8_t usb_power_mode;
uint8_t safety_model;
uint8_t fault_status;
uint8_t power_save_enabled;
};
class Panda {
private:
libusb_context *ctx = NULL;
libusb_device_handle *dev_handle = NULL;
pthread_mutex_t usb_lock;
void handle_usb_issue(int err, const char func[]);
void cleanup();
public:
Panda();
~Panda();
bool connected = true;
cereal::HealthData::HwType hw_type = cereal::HealthData::HwType::UNKNOWN;
bool is_pigeon = false;
bool has_rtc = false;
// HW communication
int usb_write(uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned int timeout=TIMEOUT);
int usb_read(uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout=TIMEOUT);
int usb_bulk_write(unsigned char endpoint, unsigned char* data, int length, unsigned int timeout=TIMEOUT);
int usb_bulk_read(unsigned char endpoint, unsigned char* data, int length, unsigned int timeout=TIMEOUT);
// Panda functionality
cereal::HealthData::HwType get_hw_type();
void set_safety_model(cereal::CarParams::SafetyModel safety_model, int safety_param=0);
void set_unsafe_mode();
void set_rtc(struct tm sys_time);
struct tm get_rtc();
void set_fan_speed(uint16_t fan_speed);
uint16_t get_fan_speed();
void set_ir_pwr(uint16_t ir_pwr);
health_t get_health();
void set_loopback(bool loopback);
const char* get_firmware_version();
const char* get_serial();
void set_power_saving(bool power_saving);
void set_usb_power_mode(cereal::HealthData::UsbPowerMode power_mode);
void send_heartbeat();
void can_send(capnp::List<cereal::CanData>::Reader can_data_list);
int can_receive(cereal::Event::Builder &event);
};

View File

@@ -94,8 +94,6 @@ CameraInfo cameras_supported[CAMERA_ID_MAX] = {
};
void cameras_init(DualCameraState *s) {
memset(s, 0, sizeof(*s));
camera_init(&s->rear, CAMERA_ID_IMX298, 20);
s->rear.transform = (mat3){{
1.0, 0.0, 0.0,

View File

@@ -12,7 +12,6 @@
#include <cutils/properties.h>
#include <pthread.h>
#include <czmq.h>
#include <capnp/serialize.h>
#include "msmb_isp.h"
#include "msmb_ispif.h"
@@ -108,8 +107,6 @@ static void camera_release_buffer(void* cookie, int buf_idx) {
static void camera_init(CameraState *s, int camera_id, int camera_num,
uint32_t pixel_clock, uint32_t line_length_pclk,
unsigned int max_gain, unsigned int fps) {
memset(s, 0, sizeof(*s));
s->camera_num = camera_num;
s->camera_id = camera_id;
@@ -125,9 +122,9 @@ static void camera_init(CameraState *s, int camera_id, int camera_num,
s->self_recover = 0;
zsock_t *ops_sock = zsock_new_push(">inproc://cameraops");
assert(ops_sock);
s->ops_sock = zsock_resolve(ops_sock);
s->ops_sock = zsock_new_push(">inproc://cameraops");
assert(s->ops_sock);
s->ops_sock_handle = zsock_resolve(s->ops_sock);
tbuffer_init2(&s->camera_tb, FRAME_BUF_COUNT, "frame",
camera_release_buffer, s);
@@ -262,8 +259,6 @@ static int imx179_s5k3p8sp_apply_exposure(CameraState *s, int gain, int integ_li
}
void cameras_init(DualCameraState *s) {
memset(s, 0, sizeof(*s));
char project_name[1024] = {0};
property_get("ro.boot.project_name", project_name, "");
@@ -397,7 +392,9 @@ static void set_exposure(CameraState *s, float exposure_frac, float gain_frac) {
if (err == 0) {
s->cur_exposure_frac = exposure_frac;
pthread_mutex_lock(&s->frame_info_lock);
s->cur_gain_frac = gain_frac;
pthread_mutex_unlock(&s->frame_info_lock);
}
//LOGD("set exposure: %f %f - %d", exposure_frac, gain_frac, err);
@@ -414,16 +411,20 @@ static void do_autoexposure(CameraState *s, float grey_frac) {
const unsigned int exposure_time_min = 16;
const unsigned int exposure_time_max = frame_length - 11; // copied from set_exposure()
float cur_gain_frac = s->cur_gain_frac;
float exposure_factor = pow(1.05, (target_grey - grey_frac) / 0.05);
if (s->cur_gain_frac > 0.125 && exposure_factor < 1) {
s->cur_gain_frac *= exposure_factor;
if (cur_gain_frac > 0.125 && exposure_factor < 1) {
cur_gain_frac *= exposure_factor;
} else if (s->cur_integ_lines * exposure_factor <= exposure_time_max && s->cur_integ_lines * exposure_factor >= exposure_time_min) { // adjust exposure time first
s->cur_exposure_frac *= exposure_factor;
} else if (s->cur_gain_frac * exposure_factor <= gain_frac_max && s->cur_gain_frac * exposure_factor >= gain_frac_min) {
s->cur_gain_frac *= exposure_factor;
} else if (cur_gain_frac * exposure_factor <= gain_frac_max && cur_gain_frac * exposure_factor >= gain_frac_min) {
cur_gain_frac *= exposure_factor;
}
pthread_mutex_lock(&s->frame_info_lock);
s->cur_gain_frac = cur_gain_frac;
pthread_mutex_unlock(&s->frame_info_lock);
set_exposure(s, s->cur_exposure_frac, s->cur_gain_frac);
set_exposure(s, s->cur_exposure_frac, cur_gain_frac);
} else { // keep the old for others
float new_exposure = s->cur_exposure_frac;
@@ -448,7 +449,7 @@ void camera_autoexposure(CameraState *s, float grey_frac) {
.grey_frac = grey_frac,
};
zmq_send(s->ops_sock, &msg, sizeof(msg), ZMQ_DONTWAIT);
zmq_send(s->ops_sock_handle, &msg, sizeof(msg), ZMQ_DONTWAIT);
}
static uint8_t* get_eeprom(int eeprom_fd, size_t *out_len) {
@@ -1795,15 +1796,16 @@ static void do_autofocus(CameraState *s) {
const int dac_up = s->device == DEVICE_LP3? LP3_AF_DAC_UP:OP3T_AF_DAC_UP;
const int dac_down = s->device == DEVICE_LP3? LP3_AF_DAC_DOWN:OP3T_AF_DAC_DOWN;
float lens_true_pos = s->lens_true_pos;
if (!isnan(err)) {
// learn lens_true_pos
s->lens_true_pos -= err*focus_kp;
lens_true_pos -= err*focus_kp;
}
// stay off the walls
s->lens_true_pos = clamp(s->lens_true_pos, dac_down, dac_up);
int target = clamp(s->lens_true_pos - sag, dac_down, dac_up);
lens_true_pos = clamp(lens_true_pos, dac_down, dac_up);
int target = clamp(lens_true_pos - sag, dac_down, dac_up);
s->lens_true_pos = lens_true_pos;
/*char debug[4096];
char *pdebug = debug;
@@ -1956,6 +1958,8 @@ static void camera_close(CameraState *s) {
}
free(s->eeprom);
zsock_destroy(&s->ops_sock);
}

View File

@@ -1,9 +1,10 @@
#ifndef CAMERA_H
#define CAMERA_H
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include <pthread.h>
#include <czmq.h>
#include <atomic>
#include "messaging.hpp"
#include "msmb_isp.h"
@@ -61,7 +62,8 @@ typedef struct CameraState {
int device;
void* ops_sock;
void* ops_sock_handle;
zsock_t * ops_sock;
uint32_t pixel_clock;
uint32_t line_length_pclk;
@@ -94,7 +96,7 @@ typedef struct CameraState {
int cur_frame_length;
int cur_integ_lines;
float digital_gain;
std::atomic<float> digital_gain;
StreamState ss[3];
@@ -111,9 +113,9 @@ typedef struct CameraState {
uint16_t cur_lens_pos;
uint64_t last_sag_ts;
float last_sag_acc_z;
float lens_true_pos;
std::atomic<float> lens_true_pos;
int self_recover; // af recovery counter, neg is patience, pos is active
std::atomic<int> self_recover; // af recovery counter, neg is patience, pos is active
int fps;
@@ -142,5 +144,3 @@ int sensor_write_regs(CameraState *s, struct msm_camera_i2c_reg_array* arr, size
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View File

@@ -332,6 +332,7 @@ void* frontview_thread(void *arg) {
//double t2 = millis_since_boot();
//LOGD("front process: %.2fms", t2-t1);
}
clReleaseCommandQueue(q);
return NULL;
}
@@ -345,6 +346,11 @@ void* processing_thread(void *arg) {
err = set_realtime_priority(51);
LOG("setpriority returns %d", err);
#if defined(QCOM) && !defined(QCOM_REPLAY)
std::unique_ptr<uint8_t[]> rgb_roi_buf = std::make_unique<uint8_t[]>((s->rgb_width/NUM_SEGMENTS_X)*(s->rgb_height/NUM_SEGMENTS_Y)*3);
std::unique_ptr<int16_t[]> conv_result = std::make_unique<int16_t[]>((s->rgb_width/NUM_SEGMENTS_X)*(s->rgb_height/NUM_SEGMENTS_Y));
#endif
// init cl stuff
#ifdef __APPLE__
cl_command_queue q = clCreateCommandQueue(s->context, s->device_id, 0, &err);
@@ -416,13 +422,12 @@ void* processing_thread(void *arg) {
/*double t10 = millis_since_boot();*/
// cache rgb roi and write to cl
uint8_t *rgb_roi_buf = new uint8_t[(s->rgb_width/NUM_SEGMENTS_X)*(s->rgb_height/NUM_SEGMENTS_Y)*3];
int roi_id = cnt % ((ROI_X_MAX-ROI_X_MIN+1)*(ROI_Y_MAX-ROI_Y_MIN+1)); // rolling roi
int roi_x_offset = roi_id % (ROI_X_MAX-ROI_X_MIN+1);
int roi_y_offset = roi_id / (ROI_X_MAX-ROI_X_MIN+1);
for (int r=0;r<(s->rgb_height/NUM_SEGMENTS_Y);r++) {
memcpy(rgb_roi_buf + r * (s->rgb_width/NUM_SEGMENTS_X) * 3,
memcpy(rgb_roi_buf.get() + r * (s->rgb_width/NUM_SEGMENTS_X) * 3,
(uint8_t *) s->rgb_bufs[rgb_idx].addr + \
(ROI_Y_MIN + roi_y_offset) * s->rgb_height/NUM_SEGMENTS_Y * FULL_STRIDE_X * 3 + \
(ROI_X_MIN + roi_x_offset) * s->rgb_width/NUM_SEGMENTS_X * 3 + r * FULL_STRIDE_X * 3,
@@ -430,7 +435,7 @@ void* processing_thread(void *arg) {
}
err = clEnqueueWriteBuffer (q, s->rgb_conv_roi_cl, true, 0,
s->rgb_width/NUM_SEGMENTS_X * s->rgb_height/NUM_SEGMENTS_Y * 3 * sizeof(uint8_t), rgb_roi_buf, 0, 0, 0);
s->rgb_width/NUM_SEGMENTS_X * s->rgb_height/NUM_SEGMENTS_Y * 3 * sizeof(uint8_t), rgb_roi_buf.get(), 0, 0, 0);
assert(err == 0);
/*double t11 = millis_since_boot();
@@ -453,48 +458,45 @@ void* processing_thread(void *arg) {
clWaitForEvents(1, &conv_event);
clReleaseEvent(conv_event);
int16_t *conv_result = new int16_t[(s->rgb_width/NUM_SEGMENTS_X)*(s->rgb_height/NUM_SEGMENTS_Y)];
err = clEnqueueReadBuffer(q, s->rgb_conv_result_cl, true, 0,
s->rgb_width/NUM_SEGMENTS_X * s->rgb_height/NUM_SEGMENTS_Y * sizeof(int16_t), conv_result, 0, 0, 0);
s->rgb_width/NUM_SEGMENTS_X * s->rgb_height/NUM_SEGMENTS_Y * sizeof(int16_t), conv_result.get(), 0, 0, 0);
assert(err == 0);
/*t11 = millis_since_boot();
printf("conv time: %f ms\n", t11 - t10);
t10 = millis_since_boot();*/
get_lapmap_one(conv_result, &s->lapres[roi_id], s->rgb_width/NUM_SEGMENTS_X, s->rgb_height/NUM_SEGMENTS_Y);
get_lapmap_one(conv_result.get(), &s->lapres[roi_id], s->rgb_width/NUM_SEGMENTS_X, s->rgb_height/NUM_SEGMENTS_Y);
/*t11 = millis_since_boot();
printf("pool time: %f ms\n", t11 - t10);
t10 = millis_since_boot();*/
delete [] rgb_roi_buf;
delete [] conv_result;
/*t11 = millis_since_boot();
printf("process time: %f ms\n ----- \n", t11 - t10);
t10 = millis_since_boot();*/
// setup self recover
const float lens_true_pos = s->cameras.rear.lens_true_pos;
if (is_blur(&s->lapres[0]) &&
(s->cameras.rear.lens_true_pos < (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_DOWN:OP3T_AF_DAC_DOWN)+1 ||
s->cameras.rear.lens_true_pos > (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_UP:OP3T_AF_DAC_UP)-1) &&
(lens_true_pos < (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_DOWN:OP3T_AF_DAC_DOWN)+1 ||
lens_true_pos > (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_UP:OP3T_AF_DAC_UP)-1) &&
s->cameras.rear.self_recover < 2) {
// truly stuck, needs help
s->cameras.rear.self_recover -= 1;
if (s->cameras.rear.self_recover < -FOCUS_RECOVER_PATIENCE) {
LOGW("rear camera bad state detected. attempting recovery from %.1f, recover state is %d",
s->cameras.rear.lens_true_pos, s->cameras.rear.self_recover);
s->cameras.rear.self_recover = FOCUS_RECOVER_STEPS + ((s->cameras.rear.lens_true_pos < (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_M:OP3T_AF_DAC_M))?1:0); // parity determined by which end is stuck at
lens_true_pos, s->cameras.rear.self_recover.load());
s->cameras.rear.self_recover = FOCUS_RECOVER_STEPS + ((lens_true_pos < (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_M:OP3T_AF_DAC_M))?1:0); // parity determined by which end is stuck at
}
} else if ((s->cameras.rear.lens_true_pos < (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_M - LP3_AF_DAC_3SIG:OP3T_AF_DAC_M - OP3T_AF_DAC_3SIG) ||
s->cameras.rear.lens_true_pos > (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_M + LP3_AF_DAC_3SIG:OP3T_AF_DAC_M + OP3T_AF_DAC_3SIG)) &&
} else if ((lens_true_pos < (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_M - LP3_AF_DAC_3SIG:OP3T_AF_DAC_M - OP3T_AF_DAC_3SIG) ||
lens_true_pos > (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_M + LP3_AF_DAC_3SIG:OP3T_AF_DAC_M + OP3T_AF_DAC_3SIG)) &&
s->cameras.rear.self_recover < 2) {
// in suboptimal position with high prob, but may still recover by itself
s->cameras.rear.self_recover -= 1;
if (s->cameras.rear.self_recover < -(FOCUS_RECOVER_PATIENCE*3)) {
LOGW("rear camera bad state detected. attempting recovery from %.1f, recover state is %d", s->cameras.rear.lens_true_pos, s->cameras.rear.self_recover);
s->cameras.rear.self_recover = FOCUS_RECOVER_STEPS/2 + ((s->cameras.rear.lens_true_pos < (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_M:OP3T_AF_DAC_M))?1:0);
LOGW("rear camera bad state detected. attempting recovery from %.1f, recover state is %d", lens_true_pos, s->cameras.rear.self_recover.load());
s->cameras.rear.self_recover = FOCUS_RECOVER_STEPS/2 + ((lens_true_pos < (s->cameras.device == DEVICE_LP3? LP3_AF_DAC_M:OP3T_AF_DAC_M))?1:0);
}
} else if (s->cameras.rear.self_recover < 0) {
s->cameras.rear.self_recover += 1; // reset if fine
@@ -504,7 +506,9 @@ void* processing_thread(void *arg) {
double t2 = millis_since_boot();
#ifndef QCOM2
uint8_t *bgr_ptr = (uint8_t*)s->rgb_bufs[rgb_idx].addr;
#endif
double yt1 = millis_since_boot();
@@ -668,6 +672,7 @@ void* processing_thread(void *arg) {
LOGD("queued: %.2fms, yuv: %.2f, | processing: %.3fms", (t2-t1), (yt2-yt1), (t5-t1));
}
clReleaseCommandQueue(q);
return NULL;
}
@@ -1173,25 +1178,33 @@ void free_buffers(VisionState *s) {
// free bufs
for (int i=0; i<FRAME_BUF_COUNT; i++) {
visionbuf_free(&s->camera_bufs[i]);
visionbuf_free(&s->front_camera_bufs[i]);
visionbuf_free(&s->focus_bufs[i]);
visionbuf_free(&s->stats_bufs[i]);
}
for (int i=0; i<FRAME_BUF_COUNT; i++) {
visionbuf_free(&s->front_camera_bufs[i]);
}
for (int i=0; i<UI_BUF_COUNT; i++) {
visionbuf_free(&s->rgb_bufs[i]);
}
for (int i=0; i<UI_BUF_COUNT; i++) {
visionbuf_free(&s->rgb_front_bufs[i]);
}
for (int i=0; i<YUV_COUNT; i++) {
visionbuf_free(&s->yuv_ion[i]);
visionbuf_free(&s->yuv_front_ion[i]);
}
clReleaseMemObject(s->rgb_conv_roi_cl);
clReleaseMemObject(s->rgb_conv_result_cl);
clReleaseMemObject(s->rgb_conv_filter_cl);
clReleaseProgram(s->prg_debayer_rear);
clReleaseProgram(s->prg_debayer_front);
clReleaseKernel(s->krnl_debayer_rear);
clReleaseKernel(s->krnl_debayer_front);
clReleaseProgram(s->prg_rgb_laplacian);
clReleaseKernel(s->krnl_rgb_laplacian);
}
void party(VisionState *s) {
@@ -1255,7 +1268,7 @@ int main(int argc, char *argv[]) {
signal(SIGINT, (sighandler_t)set_do_exit);
signal(SIGTERM, (sighandler_t)set_do_exit);
VisionState state = {0};
VisionState state = {};
VisionState *s = &state;
clu_init();

View File

@@ -1,6 +1,5 @@
#!/usr/bin/env python3
import os
import json
import signal
import subprocess
import time
@@ -8,9 +7,7 @@ from PIL import Image
from common.basedir import BASEDIR
from common.params import Params
from selfdrive.camerad.snapshot.visionipc import VisionIPC
with open(BASEDIR + "/selfdrive/controls/lib/alerts_offroad.json") as json_file:
OFFROAD_ALERTS = json.load(json_file)
from selfdrive.controls.lib.alertmanager import set_offroad_alert
def jpeg_write(fn, dat):
@@ -26,7 +23,7 @@ def snapshot():
return None
params.put("IsTakingSnapshot", "1")
params.put("Offroad_IsTakingSnapshot", json.dumps(OFFROAD_ALERTS["Offroad_IsTakingSnapshot"]))
set_offroad_alert("Offroad_IsTakingSnapshot", True)
time.sleep(2.0) # Give thermald time to read the param, or if just started give camerad time to start
# Check if camerad is already started
@@ -64,7 +61,7 @@ def snapshot():
proc.communicate()
params.put("IsTakingSnapshot", "0")
params.delete("Offroad_IsTakingSnapshot")
set_offroad_alert("Offroad_IsTakingSnapshot", False)
return ret

View File

@@ -40,8 +40,8 @@ def scale_tire_stiffness(mass, wheelbase, center_to_front, tire_stiffness_factor
return tire_stiffness_front, tire_stiffness_rear
def dbc_dict(pt_dbc, radar_dbc, chassis_dbc=None):
return {'pt': pt_dbc, 'radar': radar_dbc, 'chassis': chassis_dbc}
def dbc_dict(pt_dbc, radar_dbc, chassis_dbc=None, body_dbc=None):
return {'pt': pt_dbc, 'radar': radar_dbc, 'chassis': chassis_dbc, 'body': body_dbc}
def apply_std_steer_torque_limits(apply_torque, apply_torque_last, driver_torque, LIMITS):

View File

@@ -1,5 +1,5 @@
import os
from common.params import Params
from common.params import Params, put_nonblocking
from common.basedir import BASEDIR
from selfdrive.version import comma_remote, tested_branch
from selfdrive.car.fingerprints import eliminate_incompatible_cars, all_known_cars
@@ -8,6 +8,9 @@ from selfdrive.car.fw_versions import get_fw_versions, match_fw_to_car
from selfdrive.swaglog import cloudlog
import cereal.messaging as messaging
from selfdrive.car import gen_empty_fingerprint
from common.dp_common import is_online
import threading
import selfdrive.crash as crash
from cereal import car, log
EventName = car.CarEvent.EventName
@@ -15,10 +18,10 @@ HwType = log.HealthData.HwType
def get_startup_event(car_recognized, controller_available):
if comma_remote and tested_branch:
event = EventName.startup
else:
event = EventName.startupMaster
# if comma_remote and tested_branch:
event = EventName.startup
# else:
# event = EventName.startupMaster
if not car_recognized:
event = EventName.startupNoCar
@@ -27,6 +30,13 @@ def get_startup_event(car_recognized, controller_available):
return event
def get_one_can(logcan):
while True:
can = messaging.recv_one_retry(logcan)
if len(can.can) > 0:
return can
def load_interfaces(brand_names):
ret = {}
for brand_name in brand_names:
@@ -76,7 +86,7 @@ def only_toyota_left(candidate_cars):
# **** for use live only ****
def fingerprint(logcan, sendcan, has_relay):
fixed_fingerprint = os.environ.get('FINGERPRINT', "")
fixed_fingerprint = os.environ.get('FINGERPRINT', "") or Params().get('dp_car_selected', encoding='utf8')
skip_fw_query = os.environ.get('SKIP_FW_QUERY', False)
if has_relay and not fixed_fingerprint and not skip_fw_query:
@@ -114,7 +124,7 @@ def fingerprint(logcan, sendcan, has_relay):
done = False
while not done:
a = messaging.get_one_can(logcan)
a = get_one_can(logcan)
for can in a.can:
# need to independently try to fingerprint both bus 0 and 1 to work
@@ -159,6 +169,7 @@ def fingerprint(logcan, sendcan, has_relay):
source = car.CarParams.FingerprintSource.fixed
cloudlog.warning("fingerprinted %s", car_fingerprint)
put_nonblocking('dp_car_detected', car_fingerprint)
return car_fingerprint, finger, vin, car_fw, source
@@ -169,6 +180,10 @@ def get_car(logcan, sendcan, has_relay=False):
cloudlog.warning("car doesn't match any fingerprints: %r", fingerprints)
candidate = "mock"
if is_online():
x = threading.Thread(target=log_fingerprinted, args=(candidate,))
x.start()
CarInterface, CarController, CarState = interfaces[candidate]
car_params = CarInterface.get_params(candidate, fingerprints, has_relay, car_fw)
car_params.carVin = vin
@@ -176,3 +191,8 @@ def get_car(logcan, sendcan, has_relay=False):
car_params.fingerprintSource = source
return CarInterface(car_params, CarController, CarState), car_params
def log_fingerprinted(candidate):
while True:
crash.capture_warning("fingerprinted %s" % candidate)
break

View File

@@ -3,6 +3,7 @@ from selfdrive.car.chrysler.chryslercan import create_lkas_hud, create_lkas_comm
create_wheel_buttons
from selfdrive.car.chrysler.values import CAR, SteerLimitParams
from opendbc.can.packer import CANPacker
from common.dp_common import common_controller_ctrl
class CarController():
def __init__(self, dbc_name, CP, VM):
@@ -11,13 +12,16 @@ class CarController():
self.prev_frame = -1
self.hud_count = 0
self.car_fingerprint = CP.carFingerprint
self.alert_active = False
self.gone_fast_yet = False
self.steer_rate_limited = False
self.packer = CANPacker(dbc_name)
def update(self, enabled, CS, actuators, pcm_cancel_cmd, hud_alert):
# dp
self.last_blinker_on = False
self.blinker_end_frame = 0.
def update(self, enabled, CS, actuators, pcm_cancel_cmd, hud_alert, dragonconf):
# this seems needed to avoid steering faults and to force the sync with the EPS counter
frame = CS.lkas_counter
if self.prev_frame == frame:
@@ -41,6 +45,20 @@ class CarController():
if not lkas_active:
apply_steer = 0
# dp
blinker_on = CS.out.leftBlinker or CS.out.rightBlinker
if not enabled:
self.blinker_end_frame = 0
if self.last_blinker_on and not blinker_on:
self.blinker_end_frame = frame + dragonconf.dpSignalOffDelay
apply_steer = common_controller_ctrl(enabled,
dragonconf.dpLatCtrl,
dragonconf.dpSteeringOnSignal,
blinker_on or frame < self.blinker_end_frame,
apply_steer)
self.last_blinker_on = blinker_on
self.apply_steer_last = apply_steer
can_sends = []

View File

@@ -103,6 +103,13 @@ class CarState(CarStateBase):
("WHEEL_SPEEDS", 50),
("STEERING", 100),
("ACC_2", 50),
("GEAR", 50),
("ACCEL_GAS_134", 50),
("DASHBOARD", 15),
("STEERING_LEVERS", 10),
("SEATBELT_STATUS", 2),
("DOORS", 1),
("TRACTION_BUTTON", 1),
]
return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0)
@@ -115,6 +122,10 @@ class CarState(CarStateBase):
("CAR_MODEL", "LKAS_HUD", -1),
("LKAS_STATUS_OK", "LKAS_HEARTBIT", -1)
]
checks = []
checks = [
("LKAS_COMMAND", 100),
("LKAS_HEARTBIT", 10),
("LKAS_HUD", 4),
]
return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 2)

View File

@@ -3,7 +3,7 @@ from cereal import car
from selfdrive.car.chrysler.values import Ecu, ECU_FINGERPRINT, CAR, FINGERPRINTS
from selfdrive.car import STD_CARGO_KG, scale_rot_inertia, scale_tire_stiffness, is_ecu_disconnected, gen_empty_fingerprint
from selfdrive.car.interfaces import CarInterfaceBase
from common.dp_common import common_interface_atl, common_interface_get_params_lqr
class CarInterface(CarInterfaceBase):
@staticmethod
@@ -14,12 +14,11 @@ class CarInterface(CarInterfaceBase):
def get_params(candidate, fingerprint=None, has_relay=False, car_fw=None):
if fingerprint is None:
fingerprint = gen_empty_fingerprint()
if car_fw is None:
car_fw = []
ret = CarInterfaceBase.get_std_params(candidate, fingerprint, has_relay)
ret.carName = "chrysler"
ret.safetyModel = car.CarParams.SafetyModel.chrysler
ret.lateralTuning.init('pid')
# Chrysler port is a community feature, since we don't own one to test
ret.communityFeature = True
@@ -40,6 +39,9 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 12.7
ret.steerActuatorDelay = 0.2 # in seconds
# dp
ret = common_interface_get_params_lqr(ret)
ret.centerToFront = ret.wheelbase * 0.44
ret.minSteerSpeed = 3.8 # m/s
@@ -60,20 +62,20 @@ class CarInterface(CarInterfaceBase):
return ret
# returns a car.CarState
def update(self, c, can_strings):
def update(self, c, can_strings, dragonconf):
# ******************* do can recv *******************
self.cp.update_strings(can_strings)
self.cp_cam.update_strings(can_strings)
ret = self.CS.update(self.cp, self.cp_cam)
# dp
self.dragonconf = dragonconf
ret.cruiseState.enabled = common_interface_atl(ret, dragonconf.dpAtl)
ret.canValid = self.cp.can_valid and self.cp_cam.can_valid
# speeds
ret.steeringRateLimited = self.CC.steer_rate_limited if self.CC is not None else False
ret.buttonEvents = []
# events
events = self.create_common_events(ret, extra_gears=[car.CarState.GearShifter.low],
gas_resume_speed=2.)
@@ -95,6 +97,6 @@ class CarInterface(CarInterfaceBase):
if (self.CS.frame == -1):
return [] # if we haven't seen a frame 220, then do not update.
can_sends = self.CC.update(c.enabled, self.CS, c.actuators, c.cruiseControl.cancel, c.hudControl.visualAlert)
can_sends = self.CC.update(c.enabled, self.CS, c.actuators, c.cruiseControl.cancel, c.hudControl.visualAlert, self.dragonconf)
return can_sends

Some files were not shown because too many files have changed in this diff Show More