├── .gitignore ├── .gitmodules ├── LICENCE ├── README.md ├── architectures.yml ├── buses └── AEE2004.full │ ├── HS.IS │ ├── 072.yml │ ├── 092.yml │ ├── 0A8.yml │ ├── 208.yml │ ├── 2F5.yml │ ├── 305.yml │ ├── 30D.yml │ ├── 348.yml │ ├── 34D.yml │ ├── 38D.yml │ ├── 3CD.yml │ ├── 40D.yml │ ├── 412.yml │ ├── 44D.yml │ ├── 468.yml │ ├── 488.yml │ ├── 495.yml │ ├── 4F2.yml │ ├── 50D.yml │ ├── 50E.yml │ ├── 50F.yml │ ├── 552.yml │ ├── 588.yml │ ├── 592.yml │ ├── 60F.yml │ ├── 612.yml │ └── _DISCLAIMER.txt │ └── LS.CONF │ ├── 036.yml │ ├── 0B6.yml │ ├── 0D6.yml │ ├── 0E1.yml │ ├── 0F6.yml │ ├── 128.yml │ ├── 12B.yml │ ├── 161.yml │ ├── 165.yml │ ├── 168.yml │ ├── 1A1.yml │ ├── 1A3.yml │ ├── 1A5.yml │ ├── 1A8.yml │ ├── 1D0.yml │ ├── 1DF.yml │ ├── 1E0.yml │ ├── 1E5.yml │ ├── 217.yml │ ├── 21F.yml │ ├── 220.yml │ ├── 221.yml │ ├── 225.yml │ ├── 257.yml │ ├── 261.yml │ ├── 265.yml │ ├── 2A1.yml │ ├── 2A5.yml │ ├── 2B6.yml │ ├── 317.yml │ ├── 325.yml │ ├── 336.yml │ ├── 365.yml │ ├── 3A5.yml │ ├── 3A7.yml │ ├── 3B6.yml │ ├── 3E5.yml │ ├── 3F6.yml │ └── README.md ├── cars ├── A0.yml ├── A3.yml ├── A4.yml ├── A5.yml ├── A5P.yml ├── A6.yml ├── A7.yml ├── A8.yml ├── A88.yml ├── A9.yml ├── B0.yml ├── B3.yml ├── B4.yml ├── B5.yml ├── B618.yml ├── B7.yml ├── B8.yml ├── B9.yml ├── BX3.yml ├── BZ3.yml ├── C4.yml ├── C41.yml ├── C5.yml ├── C84.yml ├── CC21.yml ├── CS15.yml ├── CX.yml ├── D2.yml ├── D41.yml ├── D6.yml ├── D7.yml ├── D8.yml ├── D9.yml ├── E3.yml ├── E43.yml ├── F3.yml ├── G9.yml ├── I3.yml ├── I4.yml ├── J3.yml ├── J4.yml ├── K0.yml ├── K9.yml ├── KP0.yml ├── KP1.yml ├── M24.yml ├── M33.yml ├── M44.yml ├── M49.yml ├── M59.yml ├── M69.yml ├── MCV.yml ├── N2.yml ├── N3.yml ├── N5.yml ├── N6.yml ├── N7.yml ├── N8.yml ├── O2.yml ├── P2.yml ├── P5.yml ├── P8.yml ├── R2.yml ├── R3.yml ├── R8.yml ├── README.md ├── S1.yml ├── S2.yml ├── S3.yml ├── S4.yml ├── S8.yml ├── S9.yml ├── T1.yml ├── T1MUX.yml ├── T2.yml ├── T3.yml ├── T5.yml ├── T6.yml ├── T7.yml ├── T8.yml ├── T9.yml ├── TPV.yml ├── U3.yml ├── U5.yml ├── U6.yml ├── U64.yml ├── U65.yml ├── V8.yml ├── VCAN.yml ├── VD.yml ├── VGD.yml ├── VVAN.yml ├── W2.yml ├── X1.yml ├── X2.yml ├── X250.yml ├── X250FL.yml ├── X3.yml ├── X4.yml ├── X6.yml ├── X7.yml ├── X74.yml ├── X8.yml ├── XB.yml ├── Y3.yml ├── Y4.yml ├── Z6.yml ├── Z7.yml ├── Z8.yml └── Z9.yml ├── dbmuxev ├── __init__.py └── doc │ ├── PSA.md │ ├── README.md │ ├── architectures.yml │ ├── car.yml │ ├── diag_did.yml │ ├── diag_dtc.yml │ ├── diag_routine.yml │ ├── message_can.yml │ ├── message_van.yml │ └── nodes.yml ├── dumpall.py ├── nodes └── AEE2004.full.yml ├── psa-db-tool ├── README.md ├── compile_script.sh └── src │ ├── CMakeLists.txt │ ├── CanFrame.cpp │ ├── CanFrame.h │ ├── CanSignal.cpp │ ├── CanSignal.h │ ├── DbcController.cpp │ ├── DbcController.h │ ├── LanguageField.cpp │ ├── LanguageField.h │ ├── dbmuxeController.cpp │ ├── dbmuxeController.h │ ├── fileController.cpp │ ├── fileController.h │ └── psaDbTool.cpp └── sandbox ├── immobilizer_algorithm.c ├── uds_auth_algorithm.c └── uds_auth_algorithm.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/python 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=python 3 | 4 | ### Python ### 5 | # Byte-compiled / optimized / DLL files 6 | __pycache__/ 7 | *.py[cod] 8 | *$py.class 9 | 10 | # C extensions 11 | *.so 12 | 13 | # Distribution / packaging 14 | .Python 15 | .vscode/ 16 | build/ 17 | develop-eggs/ 18 | dist/ 19 | downloads/ 20 | eggs/ 21 | .eggs/ 22 | lib/ 23 | lib64/ 24 | parts/ 25 | sdist/ 26 | var/ 27 | wheels/ 28 | pip-wheel-metadata/ 29 | share/python-wheels/ 30 | *.egg-info/ 31 | .installed.cfg 32 | *.egg 33 | MANIFEST 34 | 35 | # PyInstaller 36 | # Usually these files are written by a python script from a template 37 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 38 | *.manifest 39 | *.spec 40 | 41 | # Installer logs 42 | pip-log.txt 43 | pip-delete-this-directory.txt 44 | 45 | # Unit test / coverage reports 46 | htmlcov/ 47 | .tox/ 48 | .nox/ 49 | .coverage 50 | .coverage.* 51 | .cache 52 | nosetests.xml 53 | coverage.xml 54 | *.cover 55 | *.py,cover 56 | .hypothesis/ 57 | .pytest_cache/ 58 | pytestdebug.log 59 | 60 | # Translations 61 | *.mo 62 | *.pot 63 | 64 | # Django stuff: 65 | *.log 66 | local_settings.py 67 | db.sqlite3 68 | db.sqlite3-journal 69 | 70 | # Flask stuff: 71 | instance/ 72 | .webassets-cache 73 | 74 | # Scrapy stuff: 75 | .scrapy 76 | 77 | # Sphinx documentation 78 | docs/_build/ 79 | doc/_build/ 80 | 81 | # PyBuilder 82 | target/ 83 | 84 | # Jupyter Notebook 85 | .ipynb_checkpoints 86 | 87 | # IPython 88 | profile_default/ 89 | ipython_config.py 90 | 91 | # pyenv 92 | .python-version 93 | 94 | # pipenv 95 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 96 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 97 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 98 | # install all needed dependencies. 99 | #Pipfile.lock 100 | 101 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 102 | __pypackages__/ 103 | 104 | # Celery stuff 105 | celerybeat-schedule 106 | celerybeat.pid 107 | 108 | # SageMath parsed files 109 | *.sage.py 110 | 111 | # Environments 112 | .env 113 | .venv 114 | env/ 115 | venv/ 116 | ENV/ 117 | env.bak/ 118 | venv.bak/ 119 | pythonenv* 120 | 121 | # Spyder project settings 122 | .spyderproject 123 | .spyproject 124 | 125 | # Rope project settings 126 | .ropeproject 127 | 128 | # mkdocs documentation 129 | /site 130 | 131 | # mypy 132 | .mypy_cache/ 133 | .dmypy.json 134 | dmypy.json 135 | 136 | # Pyre type checker 137 | .pyre/ 138 | 139 | # pytype static type analyzer 140 | .pytype/ 141 | 142 | # profiling data 143 | .prof 144 | 145 | # End of https://www.toptal.com/developers/gitignore/api/python 146 | 147 | 148 | 149 | # Created by https://www.toptal.com/developers/gitignore/api/node 150 | # Edit at https://www.toptal.com/developers/gitignore?templates=node 151 | 152 | ### Node ### 153 | # Logs 154 | logs 155 | *.log 156 | npm-debug.log* 157 | yarn-debug.log* 158 | yarn-error.log* 159 | lerna-debug.log* 160 | .pnpm-debug.log* 161 | 162 | # Diagnostic reports (https://nodejs.org/api/report.html) 163 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 164 | 165 | # Runtime data 166 | pids 167 | *.pid 168 | *.seed 169 | *.pid.lock 170 | 171 | # Directory for instrumented libs generated by jscoverage/JSCover 172 | lib-cov 173 | 174 | # Coverage directory used by tools like istanbul 175 | coverage 176 | *.lcov 177 | 178 | # nyc test coverage 179 | .nyc_output 180 | 181 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 182 | .grunt 183 | 184 | # Bower dependency directory (https://bower.io/) 185 | bower_components 186 | 187 | # node-waf configuration 188 | .lock-wscript 189 | 190 | # Compiled binary addons (https://nodejs.org/api/addons.html) 191 | build/Release 192 | 193 | # Dependency directories 194 | node_modules/ 195 | jspm_packages/ 196 | 197 | # Snowpack dependency directory (https://snowpack.dev/) 198 | web_modules/ 199 | 200 | # TypeScript cache 201 | *.tsbuildinfo 202 | 203 | # Optional npm cache directory 204 | .npm 205 | 206 | # Optional eslint cache 207 | .eslintcache 208 | 209 | # Optional stylelint cache 210 | .stylelintcache 211 | 212 | # Microbundle cache 213 | .rpt2_cache/ 214 | .rts2_cache_cjs/ 215 | .rts2_cache_es/ 216 | .rts2_cache_umd/ 217 | 218 | # Optional REPL history 219 | .node_repl_history 220 | 221 | # Output of 'npm pack' 222 | *.tgz 223 | 224 | # Yarn Integrity file 225 | .yarn-integrity 226 | 227 | # dotenv environment variable files 228 | .env 229 | .env.development.local 230 | .env.test.local 231 | .env.production.local 232 | .env.local 233 | 234 | # parcel-bundler cache (https://parceljs.org/) 235 | .cache 236 | .parcel-cache 237 | 238 | # Next.js build output 239 | .next 240 | out 241 | 242 | # Nuxt.js build / generate output 243 | .nuxt 244 | dist 245 | 246 | # Gatsby files 247 | .cache/ 248 | # Comment in the public line in if your project uses Gatsby and not Next.js 249 | # https://nextjs.org/blog/next-9-1#public-directory-support 250 | # public 251 | 252 | # vuepress build output 253 | .vuepress/dist 254 | 255 | # vuepress v2.x temp and cache directory 256 | .temp 257 | 258 | # Docusaurus cache and generated files 259 | .docusaurus 260 | 261 | # Serverless directories 262 | .serverless/ 263 | 264 | # FuseBox cache 265 | .fusebox/ 266 | 267 | # DynamoDB Local files 268 | .dynamodb/ 269 | 270 | # TernJS port file 271 | .tern-port 272 | 273 | # Stores VSCode versions used for testing VSCode extensions 274 | .vscode-test 275 | 276 | # yarn v2 277 | .yarn/cache 278 | .yarn/unplugged 279 | .yarn/build-state.yml 280 | .yarn/install-state.gz 281 | .pnp.* 282 | 283 | ### Node Patch ### 284 | # Serverless Webpack directories 285 | .webpack/ 286 | 287 | # Optional stylelint cache 288 | 289 | # SvelteKit build / generate output 290 | .svelte-kit 291 | 292 | # End of https://www.toptal.com/developers/gitignore/api/node -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "psa-db-tool/src/submodules/rapidyaml"] 2 | path = psa-db-tool/src/submodules/rapidyaml 3 | url = https://github.com/biojppm/rapidyaml.git 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Reverse engineering of PSA architectures 2 | 3 | ## Update - Outro 4 | 5 | This project is unlikely to have any update anytime soon. As usual with open intiatives, people are ready to ask/require things and not contribute anything. Worse, some can act like the worst choosing beggars who thinks they're entitled to someone's free work while they only troll in return. 6 | 7 | I don't have time to continue adding data, there's several frames described in the Discord server that waited months for someone to help transcribing them. Nobody did. I do have enough data to document pretty much 100% of AEE2004 and AEE2010, but no motivation to do so anymore. 8 | 9 | I'm defintively stopping responding to data requests as well, unless it's from someone who do contribute to FOSS car projects. 10 | 11 | ## Intro 12 | 13 | This project is an effort to reverse engineer and document most of the architectures used in PSA (Peugeot/Citroen/DS) cars. 14 | The goal is to enable anybody to explore their own cars and create cool DIY ECUs and tools. 15 | 16 | ## Help needed! 17 | 18 | There's a lot of work still left to document as much of the can buses as possible, if you are willing to help on these subjects, please drop by on [our discord server](https://discord.gg/DPthrN2cbS)! 19 | 20 | Help is mode needed on these subjects: 21 | * Create a web-app to browse and view all the data in a more easy to read way 22 | * Create generators that parse the yaml to generate industry standard formats (DBC, ODX, etc) 23 | * Create the VAN yaml format and document VAN frames 24 | * Document more of the CAN frames for both AEE2004 and AEE2010 25 | * Document the diagnostics (KWP/UDS) part 26 | * And more! 27 | 28 | ## Cars covered by this project 29 | 30 | All cars using the AEE2001 (VAN architecture), AEE2004 (first "FullCAN" architecture) and AEE2010 (cars made between 2010 and around 2020), in theory all cars from the 1993 citroen XM (first car to use VAN) to the early 2020s Peugeot, Citroen and DS cars should be covered. 31 | The new announced architecture, starting 2022/2023 isn't known yet. 32 | 33 | ## Ressources 34 | 35 | * This repository contains yaml files using the [DBMUXE format](https://github.com/prototux/PSA-RE/tree/master/dbmuxev/doc) as well as proof of concept code 36 | * The [issues](https://git.prototux.net/reverse-engineering/psa/canbus/-/issues) contains the current work in progress on specific can/van/diag frames 37 | * The [wiki](https://github.com/prototux/PSA-RE/wiki) contains most of the information that isn't description of specific frames 38 | 39 | ## Warning 40 | 41 | This project is (of course!) non-official, an thus, informations here may be incorrect (even if we try to avoid this) 42 | Any modification you may do to your car, even based on the documentation from here, is your sole responsibility! 43 | Similarely, we didn't got any reaction from PSA (nor know their position about FOSS projects), we cannot say if they may or not DMCA takedown your project 44 | This project uses a mix of english and french, be prepared to use a translation tool if you don't speak both languages (and the jargon in both!) 45 | The reason for this is that we tend to work in english, but PSA works using french internally, so we adapt to their jargon 46 | 47 | ## Thanks 48 | 49 | * Wouter Bokslag for his awesome work on the [reverse engineering of the immobilizer](https://fahrplan.events.ccc.de/congress/2019/Fahrplan/events/11020.html) 50 | * Alexandre Blin for his [tools](https://github.com/alexandreblin?tab=repositories), work on his 207 and for being a huge inspiration for this 51 | * Peter Pinter for his huge work on his own [FullCAN to VAN bridge](https://github.com/morcibacsi?tab=repositories) 52 | * Lanchon for his reverse engineering of AEE2004's 0x60F 53 | * All the people who leaked parts of PSA's designs all over the internet :) 54 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/072.yml: -------------------------------------------------------------------------------- 1 | id: 0x072 2 | name: 'IMMO_REQUEST' 3 | alt_names: ['RQD_CMM_BSI'] 4 | length: 5 5 | comment: 6 | en: 'Immobilizer unlock request' 7 | fr: 'Demande de debloquage anti-demarrage' 8 | de: 'Wegfahrsperre Entsperranfrage' 9 | type: 'can' 10 | periodicity: 'trigger' 11 | senders: 12 | - 'CMM' 13 | receivers: 14 | - 'BSI' 15 | 16 | signals: 17 | COMMAND: 18 | bits: '1.7-1.0' 19 | values: 20 | 0x00: 21 | en: 'Unlocked' 22 | fr: 'Deverouille' 23 | de: 'Entsperrt' 24 | 0x02: 25 | en: 'Challenge' 26 | fr: 'Challenge' 27 | de: 'Aufgabe' 28 | 29 | SEED: 30 | bits: '2.7-5.0' 31 | type: 'uint' 32 | comment: 33 | en: 'Random seed' 34 | fr: 'Challenge random' 35 | de: 'Zufällige Aufgabe' 36 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/092.yml: -------------------------------------------------------------------------------- 1 | id: 0x092 2 | name: 'DIAGNOSTIC_DATA' 3 | length: 1 4 | type: 'can' 5 | periodicity: 100 6 | comment: 7 | fr: "Cette trame est destinée à tous les ECU sur le bus IS qui ont besoin de savoir si les diagnostics sont actifs ou d'effacer les défauts" 8 | en: 'This can frame is for all ecus on the is bus which need to know if diagnostics are active or to clear faults' 9 | de: 'Dieser CAN-Frame dient dazu alle Steuergeräte am IS-Bus über diagnostische Informationen zu informieren um zum Beispiel alle Fehlercodes zu löschen.' 10 | senders: 11 | - 'BSI' 12 | receivers: # Pretty much everything that has an fault storage / can have fault codes 13 | - 'CMM' 14 | - 'ABS' 15 | - 'DAE' 16 | 17 | signals: 18 | UNKNOWN_1: 19 | bits: '1.7' 20 | DIAGNOSTIC_MODE: 21 | bits: '1.6' 22 | values: 23 | 0x00: 24 | en: 'Allowed' 25 | fr: 'Permis' 26 | de: 'Erlaubt' 27 | 0x01: 28 | en: 'Inhibited' 29 | fr: 'Inhibition' 30 | de: 'Verboten' 31 | UNKNOWN_2: 32 | bits: '1.5-1.1' 33 | FAULT_CLEARING: 34 | bits: '1.0' 35 | values: 36 | 0x00: 37 | en: 'Inactive' 38 | fr: 'Inactive' 39 | de: 'Inaktiv' 40 | 0x01: 41 | en: 'Clear fault memory' 42 | fr: 'Effacement memoire des defauts' 43 | de: 'Fehlerspeicher löschen' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/0A8.yml: -------------------------------------------------------------------------------- 1 | id: 0x0A8 2 | name: 'IMMO_RESPONSE' 3 | alt_names: ['CFD_BSI_CMM'] 4 | length: 5 5 | comment: 6 | en: 'Immobilizer response request' 7 | fr: 'Reponse anti-demarrage' 8 | de: 'Wegfahrsperre Entsperrantwort' 9 | type: 'can' 10 | periodicity: 'trigger' 11 | senders: 12 | - 'BSI' 13 | receivers: 14 | - 'CMM' 15 | 16 | signals: 17 | COMMAND: 18 | bits: '1.7-1.0' 19 | values: 20 | 0x00: 21 | en: 'Response' 22 | fr: 'Reponse' 23 | de: 'Antwort' 24 | 25 | RESPONSE: 26 | bits: '2.7-5.0' 27 | type: 'uint' 28 | comment: 29 | en: 'Response = F(SEED)' 30 | fr: 'Reponse = F(SEED)' 31 | de: 'Antwort = F(SEED)' 32 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/208.yml: -------------------------------------------------------------------------------- 1 | # TODO: check by someone whose french; this is mostly google translate 2 | id: 0x208 3 | name: 'GENERIC_ENGINE_DATA' 4 | alt_names: [] 5 | length: 8 6 | comment: 7 | en: 'Generic Engine Data' 8 | fr: 'Données moteur génériques' 9 | de: "Generelle Motordaten" 10 | type: 'can' 11 | periodicity: 10 12 | senders: 13 | - 'CMM' # logically its the only thing that has direct access to the sensors 14 | receivers: 15 | - 'BSI' # needs to gateway it to other buses 16 | 17 | signals: 18 | ENGINE_RPM: 19 | bits: '1.7-2.0' 20 | type: 'uint' 21 | factor: 0.125 22 | comment: 23 | en: "Engine rotations per minute" 24 | fr: "Regime moteur" 25 | de: "Motordrehzahl" 26 | min: 0 27 | max: 8196 28 | units: 'rpm' 29 | UNKNOWN_1: 30 | bits: '3.7-3.0' 31 | THROTTLE_PERCENTAGE: 32 | bits: '4.7-4.0' 33 | type: 'uint' 34 | factor: 0.5 35 | comment: 36 | en: "Throttle percentage" 37 | fr: "Pourcentage d'accélération du volonte conducteur" 38 | de: "Prozent an Motordrosselung" 39 | min: 0 40 | max: 100 41 | UNKNOWN_2: 42 | bits: '5.7-5.4' 43 | CRUISE_CONTROL_STATUS: 44 | bits: '5.3-5.2' 45 | type: 'uint' 46 | comment: 47 | en: "Cruise control status" 48 | fr: "État du régulateur de vitesse" 49 | de: "Tempomat Status" 50 | values: 51 | 0x0: 52 | en: "Cruise control off" 53 | fr: "régulateur de vitesse off" 54 | de: "Tempomat aus" 55 | 0x1: 56 | en: "Pedal mode" 57 | fr: "Reprise pedale" 58 | de: "Tempomat Pedal Modus" 59 | 0x2: 60 | en: "Cruise control on" 61 | fr: "régulateur de vitesse on" 62 | de: "Tempomat an" 63 | 0x3: 64 | en: "Not allowed" 65 | fr: "Inhibee" 66 | de: "Tempomat nicht erlaubt" 67 | BREAKS_PRESSED: 68 | bits: '5.1' 69 | type: 'bool' 70 | comment: 71 | en: "Breake pressed" 72 | fr: "Frein pressé" 73 | de: "Bremse betätigt" 74 | values: 75 | 0x0: 76 | en: "Breakes released" 77 | fr: "Frein relache" 78 | de: "Bremse ausgelassen" 79 | 0x1: 80 | en: "Breakes applied" 81 | fr: "Frein appuye" 82 | de: "Bremse angezogen" 83 | UNKNOWN_3: 84 | bits: '6.7-6.0' 85 | UNKNOWN_4: 86 | bits: '7.7-7.0' 87 | UNKNOWN_5: 88 | bits: '8.7-8.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/2F5.yml: -------------------------------------------------------------------------------- 1 | id: 0x092 2 | name: 'POWER_STEERING_STATUS' 3 | length: 7 4 | type: 'can' 5 | periodicity: 100 6 | comment: 7 | fr: 'Cadre pour les informations générales sur la direction assistée' 8 | en: 'Frame for general power steering information' 9 | de: 'Generelle Informationen über die elektronische Servolenkung' 10 | senders: 11 | - 'DAE' 12 | receivers: 13 | - 'BSI' 14 | # Maybe ABS because ESP uses steering information directly to allow for better correction or it may use 0x305 15 | 16 | signals: 17 | UNKNOWN_1: 18 | bits: '1.7-1.0' 19 | EXTERNAL_TORQUE_APPLIED: 20 | bits: '2.7-2.0' 21 | comment: 22 | en: 'External Torque applied to the steering wheel f.e. from the driver' 23 | fr: 'Couple externe appliqué au volant, par exemple par le conducteur' 24 | de: 'Externes Drehmoment welches auf das Lenkrad wirkt. z.B. vom Fahrer' 25 | UNKNOWN_2: 26 | bits: '3.7-3.0' 27 | STEERING_COLUMN_ANGLE: 28 | bits: '4.7-5.0' 29 | UNKNOWN_3: 30 | bits: '6.7-6.0' 31 | UNKNOWN_4: 32 | bits: '7.7-7.0' 33 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/305.yml: -------------------------------------------------------------------------------- 1 | id: 0x305 2 | name: 'WHEEL_SENSOR' 3 | alt_names: ['ANGLE_VOLANT'] 4 | length: 6 5 | comment: 6 | en: 'Wheel sensor' 7 | fr: 'Capteur volant' 8 | de: 'Lenkwinkelsensor' 9 | type: 'can' 10 | periodicity: 100 11 | senders: 12 | - 'CAV' 13 | receivers: 14 | - BSI 15 | 16 | signals: 17 | ANGLE: 18 | bits: '1.7-2.0' 19 | type: 'sint' 20 | factor: '-10' 21 | min: '-780' 22 | max: '780' 23 | units: 'degrees' 24 | values: 25 | 0x7fff: 26 | en: 'error' 27 | fr: 'erreur' 28 | de: 'Fehler' 29 | 30 | SPEED: 31 | bits: '3.7-3.0' 32 | type: 'uint' 33 | factor: '4' 34 | min: '0' 35 | max: '1000' 36 | units: 'deg/s' 37 | values: 38 | 0xff: 39 | en: 'error' 40 | fr: 'error' 41 | de: 'Fehler' 42 | 43 | DIRECTION: 44 | bits: '4.7' 45 | values: 46 | 0x00: 47 | en: 'anti-clockwise direction' 48 | fr: 'sens anti-horaire' 49 | de: 'Gegen den Uhrzeigersinn' 50 | 0x01: 51 | en: 'clockwise direction' 52 | fr: 'sens horaire' 53 | de: 'Mit dem Uhrzeigersinn' 54 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/30D.yml: -------------------------------------------------------------------------------- 1 | id: 0x30D 2 | name: 'ABS_SENSOR_DATA' 3 | length: 8 4 | type: 'can' 5 | periodicity: 200 6 | senders: 7 | - 'ABS' 8 | receivers: 9 | - 'BSI' 10 | 11 | signals: 12 | FRONT_LEFT_WHEEL_SPEED: 13 | bits: '1.7-2.0' 14 | type: 'float' 15 | factor: 0.01 16 | min: 0 17 | max: 655.35 # 0xFFFF * 0.01 18 | comment: 19 | en: 'Measured speed of front left wheel' 20 | fr: 'Vitesse mesurée de la roue avant gauche' 21 | de: 'Gemessene Geschwindigkeit des linken Vorderrades' 22 | 23 | FRONT_RIGHT_WHEEL_SPEED: 24 | bits: '3.7-4.0' 25 | type: 'float' 26 | factor: 0.01 27 | min: 0 28 | max: 655.35 # 0xFFFF * 0.01 29 | comment: 30 | en: 'Measured speed of front right wheel' 31 | fr: 'Vitesse mesurée de la roue avant droite' 32 | de: 'Gemessene Geschwindigkeit des rechten Vorderrades' 33 | 34 | REAR_LEFT_WHEEL_SPEED: 35 | bits: '5.7-6.0' 36 | type: 'float' 37 | factor: 0.01 38 | min: 0 39 | max: 655.35 # 0xFFFF * 0.01 40 | comment: 41 | en: 'Measured speed of rear left wheel' 42 | fr: 'Vitesse mesurée de la roue arrière gauche' 43 | de: 'Gemessene Geschwindigkeit des linken Heckrades' 44 | 45 | REAR_RIGHT_WHEEL_SPEED: 46 | bits: '7.7-8.0' 47 | type: 'float' 48 | factor: 0.01 49 | min: 0 50 | max: 655.35 # 0xFFFF * 0.01 51 | comment: 52 | en: 'Measured speed of rear right wheel' 53 | fr: 'Vitesse mesurée de la roue arrière droite' 54 | de: 'Gemessene Geschwindigkeit des rechten Heckrades' 55 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/348.yml: -------------------------------------------------------------------------------- 1 | # TODO: Accually do it 2 | id: 0x348 3 | name: 'GENERIC_ENGINE_DATA_2' 4 | alt_names: [] 5 | length: 8 6 | comment: 7 | en: 'Generic Engine Data 2' 8 | fr: 'Données génériques du moteur 2' 9 | de: 'Generelle Motordaten 2' 10 | type: 'can' 11 | periodicity: 20 12 | senders: 13 | - 'CMM' # logically its the only thing that has direct access to the sensors 14 | receivers: 15 | - 'BSI' # needs to gateway it to other buses 16 | 17 | signals: 18 | UNKNOWN_1: 19 | bits: '1.7-1.1' 20 | WATER_DIESEL: 21 | bits: '1.0' 22 | values: 23 | 0x00: 24 | en: 'No water in diesel system' 25 | fr: "Pas d'eau dans le système diesel" 26 | de: 'Kein Wasserdiesel im Kraftstoffsystem' 27 | 0x01: 28 | en: 'Water in diesel' 29 | fr: 'Eau dans le diesel' 30 | de: 'Wasserdiesel im Kraftstoffsystem' 31 | TORQUE_REQUESTED: 32 | bits: '2.7-2.0' 33 | factor: 2 34 | offset: -100 35 | min: -100 36 | max: 410 # 0xFF * 2 -100 37 | UNKNOWN_2: 38 | bits: '3.7-3.0' 39 | TORQUE_LOST: 40 | bits: '4.7-4.0' 41 | factor: 2 42 | offset: -100 43 | min: -100 44 | max: 410 # 0xFF * 2 -100 45 | UNKNOWN_3: 46 | bits: '5.7-5.4' 47 | CLUTCH_PEDAL_CONTACT: 48 | bits: '5.3' 49 | values: 50 | 0x00: 51 | en: 'Clutch released ' 52 | fr: 'Embrayage relâché' 53 | de: 'Kupplung draußen' 54 | 0x01: 55 | en: 'Clutch pressed' 56 | fr: 'Embrayage enfoncé' 57 | de: 'Kupplung gedrückt' 58 | UNKNOWN_4: 59 | bits: '5.2-5.0' 60 | UNKNOWN_5: 61 | bits: '6.7-6.3' 62 | ENGINE_STATUS: 63 | bits: '6.2-6.0' 64 | values: 65 | 0x00: # 0b000 66 | en: 'Disabled' 67 | fr: 'Désactivé' 68 | de: 'Deaktiviert' 69 | 0x01: # 0b001 70 | en: 'Disabled' 71 | fr: 'Désactivé' 72 | de: 'Deaktiviert' 73 | 0x02: # 0b010 74 | en: 'Start up' 75 | fr: 'Démarrer' 76 | de: 'Starten' 77 | 0x03: # 0b011 78 | en: 'Engine running' 79 | fr: 'Moteur en marche' 80 | de: 'Motor läuft' 81 | 0x04: # 0b100 82 | en: 'Engine stopped' 83 | fr: 'Moteur arrêté' 84 | de: 'Motor gestoppt' 85 | 0x07: # 0b111 86 | en: 'Engine in preparation' 87 | fr: 'Moteur en préparation' 88 | de: 'Motor in Vorbereitung' 89 | UNKNOWN_6: 90 | bits: '7.7-7.0' 91 | UNKNOWN_7: 92 | bits: '8.7-8.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/34D.yml: -------------------------------------------------------------------------------- 1 | id: 0x34D 2 | name: 'BREAKING_SYSTEMS_SYNCHRONISATIONS' 3 | length: 8 4 | type: 'can' 5 | periodicity: 20 6 | comment: 7 | en: 'Generic information about the different traction systems' 8 | fr: 'Informations générales sur les différents systèmes de traction' 9 | de: 'Generelle Information über die verschiedenen Traktionssysteme' 10 | senders: 11 | - 'ABS' 12 | receivers: 13 | - 'BSI' 14 | - 'CMM' # CMM is probably also listening if there is no direct way between ABS and CMM and only over BSI it probably would not meet timing requirements 15 | 16 | signals: 17 | ESP_DISABLED_BY_DRIVER: 18 | bits: '1.7' 19 | values: 20 | 0x00: 21 | en: 'ESP is enabled' 22 | fr: 'ESP est activé' 23 | de: 'ESP ist aktiv' 24 | 0x01: 25 | en: 'ESP was disabled by driver' 26 | fr: 'ESP a été désactivé par le conducteur' 27 | de: 'ESP wurde durch den Fahrer deaktiviert' 28 | ESP_CURRENTLY_REGULATING: 29 | bits: '1.6' 30 | values: 31 | 0x00: 32 | en: 'ESP is not in regulation' 33 | fr: "ESP n'est pas en régulation" 34 | de: 'ESP greift gerade nicht ein.' 35 | 0x01: 36 | en: 'ESP is currently in regulation' 37 | fr: 'ESP est actuellement en réglementation' 38 | de: 'ESP greift gerade ein.' 39 | UNKNOWN_1: 40 | bits: '1.5' 41 | ILLUMINATE_FAULT_LIGHT: 42 | bits: '1.4' 43 | values: 44 | 0x00: 45 | en: 'Do not illuminate' 46 | fr: 'Ne pas éclairer' 47 | de: 'Lampe nicht erleuchten' 48 | 0x01: 49 | en: 'illuminate' 50 | fr: 'éclairer' 51 | de: 'Erleuchte die Lampe' 52 | UNKNOWN_2: 53 | bits: '1.3' 54 | TORQUE_REACTION_TYPE: 55 | bits: '1.2-1.0' 56 | values: 57 | 0x00: 58 | en: 'No torque change needed.' 59 | fr: "Aucun changement de couple n'est nécessaire." 60 | de: 'Keine Drehmomentveränderung angefordert.' 61 | 0x05: 62 | en: 'Less torque needed.' 63 | fr: 'Moins de couple nécessaire.' 64 | de: 'Weniger Drehmoment benötigt.' 65 | 0x06: 66 | en: 'More torque needed.' 67 | fr: 'Plus de couple nécessaire.' 68 | de: 'Mehr Drehmoment benötigt ' 69 | UNKNOWN_3: 70 | bits: '2.7-2.0' 71 | TARGET_TORQUE_REDUCTION: 72 | bits: '3.7-3.0' 73 | type: 'int' 74 | comment: 75 | en: 'Torque the motor should target to gain wheel traction.' 76 | fr: 'Couple que le moteur doit viser pour obtenir une traction sur la roue.' 77 | de: 'Drehmoment des Motors welcher er erreichen sollte um Traktion der Räder zu verbessern' 78 | factor: 2 79 | min: -100 80 | offset: -100 81 | max: 410 # 0xFF * 2 - 100 82 | unit: "Nm" 83 | TORQUE_REDUCTION_TARGET: # Flipped name around its also a TARGET_TORQUE_REDUCTION but a second time and YML doesnt like that 84 | bits: '4.7-4.0' 85 | type: 'int' 86 | comment: 87 | en: 'Torque the motor should target to gain wheel traction.' 88 | fr: 'Couple que le moteur doit viser pour obtenir une traction sur la roue.' 89 | de: 'Drehmoment des Motors welcher er erreichen sollte um Traktion der Räder zu verbessern' 90 | factor: 2 91 | min: -100 92 | offset: -100 93 | max: 410 # 0xFF * 2 - 100 94 | unit: "Nm" 95 | TORQUE_INCRESE_TARGET: 96 | bits: '5.7-5.0' 97 | type: 'int' 98 | comment: 99 | en: 'Torque the motor should target to gain wheel traction.' 100 | fr: 'Couple que le moteur doit viser pour obtenir une traction sur la roue.' 101 | de: 'Drehmoment des Motors welcher er erreichen sollte um Traktion der Räder zu verbessern' 102 | factor: 2 103 | min: -100 104 | offset: -100 105 | max: 410 # 0xFF * 2 - 100 106 | unit: "Nm" 107 | UNKNOWN_4: 108 | bits: '6.7-6.0' 109 | REGULATION_SYSTEMS: 110 | bits: '7.7-7.1' 111 | comment: 112 | en: 'If any of these bits are 1 a system is active, depending on the bit you can tell which system is active' 113 | fr: "Si l'un de ces bits est égal à 1, un système est actif. En fonction du bit, vous pouvez déterminer quel système est actif." 114 | de: 'Wenn einer dieser Bits auf 1 springt ist ein Traktionssystem aktiv, je nachdem welcher Bit auf 1 springt weiß man welches System aktiv ist.' 115 | UNKNOWN_5: 116 | bits: '7.0' 117 | UNKNOWN_6: 118 | bits: '8.7-8.0' 119 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/38D.yml: -------------------------------------------------------------------------------- 1 | id: 0x38D 2 | name: 'ABS_GENERIC_DATA' 3 | length: 7 4 | comment: 5 | en: 'Generic ABS data like speed, acceleration' 6 | fr: "Données ABS génériques telles que la vitesse, l'accélération" 7 | de: 'Allgemeine Daten des ABS wie Fahrzeuggeschwindigkeit, Beschleunigung' 8 | type: 'can' 9 | periodicity: 40 10 | senders: 11 | - 'ABS' 12 | receivers: 13 | - 'BSI' 14 | 15 | signals: 16 | VEHICLE_SPEED: 17 | bits: '1.7-2.0' 18 | type: 'float' 19 | factor: 0.01 20 | min: 0 21 | max: 655.35 # 0xFFFF * 0.01 22 | comment: 23 | en: 'Vehicle speed' 24 | fr: 'Vitesse du véhicule' 25 | de: 'Fahrzeuggeschwindigkeit' 26 | 27 | UNKNOWN_1: 28 | bits: '3.7-4.0' 29 | 30 | ACCELERATION_LONGITUDINALE: 31 | bits: '5.7-5.0' 32 | type: 'float' 33 | factor: 0.08 34 | offset: -14 35 | min: -14 36 | max: 6.4 # (0xFF * 0.08) - 14 37 | comment: 38 | en: 'Longitudinale acceleration' 39 | fr: 'Accélération longitudinale' 40 | de: 'Längsschnittige Beschleunigung' 41 | 42 | UNKNOWN_2: 43 | bits: '6.7-6.0' 44 | 45 | UNKNOWN_3: 46 | bits: '7.7-7.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/3CD.yml: -------------------------------------------------------------------------------- 1 | id: 0x3CD 2 | name: 'ABS_GENERIC_DATA_2' 3 | length: 8 4 | type: 'can' 5 | periodicity: 10 6 | comment: 7 | en: 'Generic information about different ABS / ASR / ESP sensors' 8 | fr: 'Informations génériques sur les différents capteurs ABS / ASR / ESP' 9 | de: 'Information über ABS / ASR und ESP Sensoren' 10 | senders: 11 | - 'ABS' 12 | receivers: 13 | - 'BSI' 14 | - 'CMM' # CMM is probably also listening if there is no direct way between ABS and CMM and only over BSI it probably would not meet timing requirements 15 | 16 | signals: 17 | LATERAL_ACCELERATION: 18 | bits: '1.7-1.0' 19 | type: 'float' 20 | signed: true 21 | factor: 0.05 22 | min: -15 23 | max: 15 24 | LATERAL_SPEED: 25 | bits: '2.7-2.0' 26 | type: 'float' 27 | signed: true 28 | factor: 0.1 29 | min: -100 30 | max: 100 31 | UNKNOWN_1: 32 | bits: '3.7-3.0' 33 | UNKNOWN_2: 34 | bits: '4.7-4.0' 35 | UNKNOWN_3: 36 | bits: '5.7-5.0' 37 | BREAK_SYSTEM_PRESSURE: 38 | bits: '6.7-7.4' 39 | type: 'float' 40 | factor: 0.1 41 | offset: -55 42 | min: -55 43 | max: 354.5 # 12 bit *0.1 -55 44 | UNKNOWN_4: 45 | bits: '7.3-7.0' 46 | UNKNOWN_5: 47 | bits: '8.7-8.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/40D.yml: -------------------------------------------------------------------------------- 1 | id: 0x40D 2 | name: 'ABS_WHEEL_INCREMENTOR' 3 | length: 8 4 | type: 'can' 5 | comment: 6 | en: 'Frame which contains wheel incrementors' 7 | fr: 'Cadre contenant les incrémenteurs de roue' 8 | de: 'Frame welcher die Daten des Rad-Inkrementierrades enthält' 9 | periodicity: 20 # calculated 20.58 ms 10 | senders: 11 | - 'ABS' 12 | receivers: 13 | - 'BSI' 14 | 15 | signals: 16 | SENSOR_LEFT_FRONT_WHEEL: 17 | bits: '1.7' 18 | values: 19 | 0x00: 20 | en: 'Sensor OK' 21 | fr: 'Capteur OK' 22 | de: 'Sensor OK' 23 | 0x01: 24 | en: 'Sensor Error' 25 | fr: 'Erreur de capteur' 26 | de: 'Sensor Fehler' 27 | 28 | FRONT_LEFT_WHEEL_INCREMETOR: 29 | bits: '1.6-2.1' 30 | type: uint 31 | 32 | 33 | SENSOR_RIGHT_FRONT_WHEEL: 34 | bits: '2.0' 35 | values: 36 | 0x00: 37 | en: 'Sensor OK' 38 | fr: 'Capteur OK' 39 | de: 'Sensor OK' 40 | 0x01: 41 | en: 'Sensor Error' 42 | fr: 'Erreur de capteur' 43 | de: 'Sensor Fehler' 44 | 45 | FRONT_RIGHT_WHEEL_INCREMETOR: 46 | bits: '3.7-4.2' # this is kind of guessed since I didnt drive long enough to reach bit pos 3.7 or even 3.5 and for all the others it is too! 47 | type: 'uint' 48 | 49 | 50 | SENSOR_LEFT_REAR_WHEEL: 51 | bits: '4.1' 52 | values: 53 | 0x00: 54 | en: 'Sensor OK' 55 | fr: 'Capteur OK' 56 | de: 'Sensor OK' 57 | 0x01: 58 | en: 'Sensor Error' 59 | fr: 'Erreur de capteur' 60 | de: 'Sensor Fehler' 61 | 62 | REAR_LEFT_WHEEL_INCREMETOR: 63 | bits: '4.0-6.3' 64 | type: 'uint' 65 | 66 | 67 | SENSOR_RIGHT_REAR_WHEEL: 68 | bits: '6.2' 69 | values: 70 | 0x00: 71 | en: 'Sensor OK' 72 | fr: 'Capteur OK' 73 | de: 'Sensor OK' 74 | 0x01: 75 | en: 'Sensor Error' 76 | fr: 'Erreur de capteur' 77 | de: 'Sensor Fehler' 78 | 79 | REAR_RIGHT_WHEEL_INCREMETOR: 80 | bits: '6.1-8.4' 81 | type: 'uint' 82 | 83 | 84 | COUNTER: 85 | bits: '8.3-8.0' 86 | comment: 87 | en: 'Some Counter' 88 | fr: 'Comptoir' 89 | de: 'Zähler' 90 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/412.yml: -------------------------------------------------------------------------------- 1 | id: 0x412 2 | name: 'GATEWAY_DATA' 3 | length: 8 4 | comment: 5 | en: 'This is data that is gatewated or gathered from/by the BSI and sent into the IS bus' 6 | fr: "Il s'agit de données qui sont contrôlées ou collectées depuis/par le BSI et envoyées dans le bus IS" 7 | de: 'Diese Daten kommen von anderen Bussen über das BSI in den IS Bus' 8 | type: 'can' 9 | periodicity: 50 10 | senders: 11 | - 'BSI' 12 | receivers: 13 | - 'CMM' 14 | 15 | signals: 16 | UNKNOWN_1: 17 | bits: '1.7-1.6' 18 | BREAK_PEDAL_CONTACT: 19 | bits: '1.5' 20 | values: 21 | 0x00: 22 | en: 'Break pedal contact open' 23 | fr: 'Contact de pédale de frein ouvert' 24 | de: 'Bremspedalkontakt offen' 25 | 0x01: 26 | en: 'Break pedal contact closed' 27 | fr: 'Contact de pédale de frein fermé' 28 | de: 'Bremspedalkontakt geschlossen' 29 | IGNITION_KEY_POSITION: 30 | bits: '1.4' 31 | values: 32 | 0x00: 33 | en: 'Ignition off' 34 | fr: 'Contact coupé' 35 | de: 'Zündung inaktiv' 36 | 0x01: 37 | en: 'Ignition on' 38 | fr: 'Allumage en marche' 39 | de: 'Zündung aktiv' 40 | HANDBREAK_CONTACT: 41 | bits: '1.3' 42 | values: 43 | 0x00: 44 | en: 'Handbreak contact open' 45 | fr: 'Contact de frein à main ouvert' 46 | de: 'Handbremse-Kontakt offen' 47 | 0x01: 48 | en: 'Handbreak contact closed' 49 | fr: 'Contact de frein à main fermé' 50 | de: 'Handbremse-Kontakt geschlossen' 51 | IN_REVERSE_GEAR: 52 | bits: '1.2' 53 | values: 54 | 0x00: 55 | en: 'Not in reverse' 56 | fr: 'Pas en marche arrière' 57 | de: 'Nicht im Rückwertsgang' 58 | 0x01: 59 | en: 'In reverse' 60 | fr: 'En marche arrière' 61 | de: 'Im Rückwertsgang' 62 | IGNITION_START_POSITION: 63 | bits: '1.1' 64 | values: 65 | 0x00: 66 | en: 'Not in start position' 67 | fr: 'Pas en position de départ' 68 | de: 'Nicht in Startposition' 69 | 0x01: 70 | en: 'In starting position' 71 | fr: 'En position de départ' 72 | de: 'In Startposition' 73 | UNKNOWN_2: 74 | bits: '1.0' 75 | UNKNOWN_3: 76 | bits: '2.7-2.3' 77 | REQUEST_ENGINE_OIL_MESSUREMENT: 78 | bits: '2.2' 79 | values: 80 | 0x00: 81 | en: 'Engine Oil messurement not requested' 82 | fr: "Mesure de l'huile moteur non demandée" 83 | de: 'Motorölstandmessung nicht angefordert' 84 | 0x01: 85 | en: 'Engine Oil messurement requested' 86 | fr: "Mesure de l'huile moteur demandée" 87 | de: 'Motorölstandmessung angefordert' 88 | UNKNOWN_4: 89 | bits: '2.1-2.0' 90 | REQUEST_STABILITY_PROGRAM_DISABLE: 91 | bits: '3.7' 92 | values: 93 | 0x00: 94 | en: 'No disabling of SP requested' 95 | fr: 'Aucune désactivation du SP demandée' 96 | de: 'Keine Anfrage das Stabilitätsprogramm zu deaktiveren' 97 | 0x01: 98 | en: 'Disabling of SP requested' 99 | fr: 'Désactivation du SP demandée' 100 | de: 'Anfrage das Stabilitätsprogramm zu deaktiveren' 101 | UNKNOWN_5: 102 | bits: '3.6-3.0' 103 | HEATING_ACTION: 104 | bits: '4.7-4.6' 105 | values: 106 | 0x00: # 0b00 107 | en: 'No heating' 108 | fr: 'Pas de chauffage' 109 | de: 'Keine Heizung' 110 | 0x01: # 0b01 111 | en: 'Heating Mode 1' 112 | fr: 'Mode de chauffage 1' 113 | de: 'Heizmodus 1' 114 | 0x02: # 0b10 115 | en: 'Heating Mode 2' 116 | fr: 'Mode de chauffage 2' 117 | de: 'Heizmodus 2' 118 | 0x03: # 0b11 119 | en: 'Heating mode 1 & 2' 120 | fr: 'Mode de chauffage 1 et 2' 121 | de: 'Heizmodus 1 & 2' 122 | UNKNOWN_6: 123 | bits: '4.5-4.0' 124 | UNKNOWN_7: 125 | bits: '5.7-5.0' 126 | MOTOR_OIL_TEMPERATURE: 127 | bits: '6.7-6.0' 128 | type: 'int' 129 | factor: 1 130 | min: -40 131 | offset: -40 132 | max: 215 # 0xFF - 40 133 | unit: '°C' 134 | TRUNK_STATE: 135 | bits: '7.7' 136 | values: 137 | 0x00: 138 | en: 'Closed' 139 | fr: 'Fermé' 140 | de: 'Geschlossen' 141 | 0x01: 142 | en: 'Open' 143 | fr: 'Ouvrir' 144 | de: 'Offen' 145 | REAR_RIGHT_DOOR: 146 | bits: '7.6' 147 | values: 148 | 0x00: 149 | en: 'Closed' 150 | fr: 'Fermé' 151 | de: 'Geschlossen' 152 | 0x01: 153 | en: 'Open' 154 | fr: 'Ouvrir' 155 | de: 'Offen' 156 | REAR_LEFT_DOOR: 157 | bits: '7.5' 158 | values: 159 | 0x00: 160 | en: 'Closed' 161 | fr: 'Fermé' 162 | de: 'Geschlossen' 163 | 0x01: 164 | en: 'Open' 165 | fr: 'Ouvrir' 166 | de: 'Offen' 167 | PASSENGER_DOOR: 168 | bits: '7.4' 169 | values: 170 | 0x00: 171 | en: 'Closed' 172 | fr: 'Fermé' 173 | de: 'Geschlossen' 174 | 0x01: 175 | en: 'Open' 176 | fr: 'Ouvrir' 177 | de: 'Offen' 178 | DRIVER_DOOR: 179 | bits: '7.3' 180 | values: 181 | 0x00: 182 | en: 'Closed' 183 | fr: 'Fermé' 184 | de: 'Geschlossen' 185 | 0x01: 186 | en: 'Open' 187 | fr: 'Ouvrir' 188 | de: 'Offen' 189 | UNKNOWN_8: 190 | bits: '7.2-7.0' 191 | UNKNOWN_9: 192 | bits: '8.7-8.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/44D.yml: -------------------------------------------------------------------------------- 1 | id: 0x44D 2 | name: 'STABILITY_SYSTEM_WHEEL_DATA' 3 | length: 8 4 | type: 'can' 5 | comment: 6 | en: 'Frame which contains precalculated wheel speed averages' 7 | fr: 'Cadre contenant des moyennes de vitesse de roue précalculées' 8 | de: 'Frame welcher vorberechnete durschnitts Radgeschwindigkeiten enthält' 9 | periodicity: 40 # calculated 41.1 ms based on how many 0x208 frames before one 0x44D 10 | senders: 11 | - 'ABS' 12 | receivers: 13 | - 'BSI' 14 | 15 | signals: 16 | AVERAGE_SPEED_FRONT_WHEELS: 17 | bits: '1.7-2.0' 18 | type: 'float' 19 | factor: 0.01 20 | min: 0 21 | max: 655.35 # 0xFFFF * 0.01 22 | comment: 23 | en: 'Measured average speed of front wheels' 24 | fr: 'Vitesse moyenne mesurée des roues avant' 25 | de: 'Gemessene durschnitts Geschwindigkeit der Vorderräder' 26 | 27 | REAR_LEFT_WHEEL_SPEED: 28 | bits: '3.7-4.0' 29 | type: 'float' 30 | factor: 0.01 31 | min: 0 32 | max: 655.35 # 0xFFFF * 0.01 33 | comment: 34 | en: 'Measured speed of rear left wheel' 35 | fr: 'Vitesse mesurée de la roue arrière gauche' 36 | de: 'Gemessene Geschwindigkeit des linken Hinderrades' 37 | 38 | REAR_RIGHT_WHEEL_SPEED: 39 | bits: '5.7-6.0' 40 | type: 'float' 41 | factor: 0.01 42 | min: 0 43 | max: 655.35 # 0xFFFF * 0.01 44 | comment: 45 | en: 'Measured speed of rear right wheel' 46 | fr: 'Vitesse mesurée de la roue arrière droite' 47 | de: 'Gemessene Geschwindigkeit des rechten Hinderrades' 48 | 49 | AVERAGE_ROTATIONS_FRONT_WHEELS: 50 | bits: '7.7-8.0' 51 | type: 'float' 52 | factor: 0.01 53 | min: 0 54 | max: 655.35 # 0xFFFF * 0.01 55 | comment: 56 | en: 'Average rotations of front wheels' 57 | fr: 'Rotations moyennes des roues avant' 58 | de: 'Durschnittliche Drehzahl der Vorderräder' 59 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/468.yml: -------------------------------------------------------------------------------- 1 | # TODO: check by someone whose french; this is mostly google translate 2 | id: 0x468 3 | name: 'GENERIC_ENGINE_DATA_3' 4 | alt_names: [] 5 | length: 6 6 | comment: 7 | en: 'Generic Engine Data 3' 8 | fr: 'Données génériques du moteur 3' 9 | de: 'Generelle Motordaten 3' 10 | type: 'can' 11 | periodicity: 40 12 | senders: 13 | - 'CMM' # logically its the only thing that has direct access to the sensors 14 | receivers: 15 | - 'BSI' # needs to gateway it to other buses 16 | 17 | signals: 18 | STARTER_STATUS: 19 | bits: '1.7' 20 | type: 'bool' 21 | comment: 22 | en: 'Starter Status' 23 | fr: 'Statut de starter' 24 | de: 'Stater Aktiv' 25 | values: 26 | 0x0: 27 | en: 'Starter inactive' 28 | fr: 'Démarreur inactif' 29 | de: 'Starter inaktiv' 30 | 0x1: 31 | en: 'Starter active' 32 | fr: 'Démarreur actif' 33 | de: 'Starter aktiv' 34 | UNKNOWN_1: 35 | bits: '1.6-1.0' 36 | UNKNOWN_2: 37 | bits: '2.7-2.0' 38 | UNKNOWN_3: 39 | bits: '3.7-3.0' 40 | UNKNOWN_4: 41 | bits: '4.7-4.2' 42 | ALTERNATE_REGULATOR_VOLTAGE: 43 | bits: '4.1-5.4' 44 | factor: 0.1 45 | min: 10.6 46 | offset: 10.6 47 | max: 16 # 0b11 1111 * 0.1 + 10.6 -> ~ 16 48 | UNKNOWN_5: 49 | bits: '5.3-5.0' 50 | UNKNOWN_6: 51 | bits: '6.7-6.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/488.yml: -------------------------------------------------------------------------------- 1 | # TODO: check by someone whose french; this is mostly google translate 2 | id: 0x488 3 | name: 'ENGINE_DATA' 4 | alt_names: [] 5 | length: 8 6 | comment: 7 | en: 'Engine Data ' 8 | fr: 'Données du moteur' 9 | de: 'Motordaten' 10 | type: 'can' 11 | periodicity: 100 12 | senders: 13 | - 'CMM' # logically its the only thing that has direct access to the sensors 14 | receivers: 15 | - 'BSI' # needs to gateway it to other buses 16 | 17 | signals: 18 | ENGINE_COOLANT_TEMPERATURE: 19 | bits: '1.7-1.0' 20 | type: 'int' 21 | comment: 22 | en: "Engine water temperature" 23 | fr: "Temperature d'eau moteur" 24 | de: "Motorkühlmittel Temperatur" 25 | factor: 1 26 | min: -40 27 | max: 214 28 | offset: -40 29 | unit: '°C' 30 | FUEL_CONSUMPTION_COUNTER: # Counter since in resets after max 31 | bits: '2.7-2.0' 32 | type: 'uint' 33 | comment: 34 | en: 'Fuel consumtion counter' 35 | fr: 'Consommation carburant' 36 | de: 'Kraftstoffverbrauch-Zähler' 37 | factor: 0.08 38 | min: 0 39 | max: 20.4 # 0xFF * 0.08 40 | unit: 'mL' 41 | 42 | # A little counter intutive since 8 bits with factor of 8 only goes up to around 2000 when redline is like tripple that 43 | # In testing (from radston12) found that this value usually stays 840 (diesel cmm ; may be different in petrol) and the spikes when throttling are around 1/8 smaller than the acuall RPM peak so 44 | # when the engine is throttled to around 3000 rpms the target value only goes up about 280 units even though the rpms rise about 2200 from idle 45 | ENGINE_RPM_IDLE_AND_TARGET: 46 | bits: '3.7-3.0' 47 | type: 'uint' 48 | comment: 49 | en: 'Idle RPM ; When applying trottle -> (Difference - Idle) * 8 -> Targeted RPM' 50 | fr: "Ralenti RPM ; lors de l'application de l'accélérateur -> (Différence - Ralenti) * 8 -> RPM ciblé" 51 | de: 'Standgas ; Beim Geben von Gas -> (Differenz - Standgas) * 8 -> Ziel Drehzahl' 52 | factor: 8 53 | min: 0 54 | max: 2040 # 0xFF * 8 55 | unit: 'rpm' # well not quite 56 | UNKNOWN_1: # constant 10 then 0/1 seems to be related with engine running but stays on after shutoff - 57 | bits: '4.7-4.5' 58 | ADDITIV_ALERT: 59 | bits: '4.4' 60 | type: 'bool' 61 | comment: 62 | en: 'Additiv alert' 63 | fr: 'alerte additive' 64 | de: 'Kraftstoffaditiv Warnung' 65 | values: 66 | 0x0: 67 | en: 'No Warning' 68 | fr: 'Aucun avertissement concernant les additifs' 69 | de: 'Keine Warnung' 70 | 0x1: 71 | en: 'Warning' 72 | fr: 'Avertissement concernant les additifs' 73 | de: 'Warnung' 74 | COOLANT_OVERHEATING_ALERT: 75 | bits: '4.3' 76 | type: 'bool' 77 | comment: 78 | en: 'Overheating alert' 79 | fr: 'alerte de surchauffe du liquide de refroidissement' 80 | de: 'Kühlmittel Überhitzung Warnung' 81 | values: 82 | 0x0: 83 | en: 'No Warning' 84 | fr: 'Aucun avertissement' 85 | de: 'Keine Warnung' 86 | 0x1: 87 | en: 'Warning' 88 | fr: 'Avertissement ' 89 | de: 'Warnung' 90 | UNKNOWN_2: 91 | bits: '4.2' 92 | PREHEAT_ENGINE_LAMP_REQUEST: 93 | bits: '4.1' 94 | type: 'bool' 95 | comment: 96 | en: 'Preheating lamp request' 97 | fr: 'lampe de préchauffage' 98 | de: 'Vorglühen Anzeige Anfrage' 99 | values: 100 | 0x0: 101 | en: 'Turn off lamp' 102 | fr: 'Éteindre la lampe de préchauffage' 103 | de: 'Lampe deaktivieren ' 104 | 0x1: 105 | en: 'Turn on lamp' 106 | fr: 'Allumer la lampe de préchauffage' 107 | de: 'Lampe aktivieren' 108 | ENGINE_STARTING: 109 | bits: '4.0' 110 | type: 'bool' 111 | comment: 112 | en: 'Is engine currently starting?' 113 | fr: 'Le moteur démarre-t-il actuellement?' 114 | de: 'Startet der Motor gerade?' 115 | values: 116 | 0x0: 117 | en: 'No' 118 | fr: 'Non' 119 | de: 'Nein' 120 | 0x1: 121 | en: 'Yes' 122 | fr: 'Oui' 123 | de: 'Ja' 124 | UNKNOWN_3: 125 | bits: '5.7-5.0' 126 | ENGINE_OIL_TEMPERATURE: 127 | bits: '6.7-6.0' 128 | type: 'int' 129 | comment: 130 | en: 'Engine oil temperature' 131 | fr: "Temperature d'huile moteur" 132 | de: 'Motoröltemperatur' 133 | factor: 1 134 | min: -40 135 | max: 214 136 | offset: -40 137 | unit: '°C' 138 | AIR_CONDITINING_REFRIGERATION_PRESSURE: 139 | bits: '7.7-7.0' 140 | type: 'uint' 141 | comment: 142 | en: 'AC refrigerant pressure' 143 | fr: 'Pression du réfrigérant du climatiseur' 144 | de: 'Klimaanlage Kältemitteldruck' 145 | factor: 25 146 | min: 0 147 | max: 6375 # 0xFF * 25 148 | ENGINE_INTAKE_AIR_TEMPERATURE: 149 | bits: '8.7-8.0' 150 | type: 'int' 151 | comment: 152 | en: 'Engine intake air temperature' 153 | fr: "Température de l'air d'admission du moteur" 154 | de: 'Ansauglufttemperatur Motor' 155 | factor: 1 156 | min: -40 157 | max: 214 158 | offset: -40 159 | unit: '°C' 160 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/495.yml: -------------------------------------------------------------------------------- 1 | id: 0x495 2 | name: 'POWER_STEERING_STATISTICS' 3 | length: 2 4 | comment: 5 | en: 'Frame for power steering statistics' 6 | fr: 'Cadre pour les statistiques de direction assistée' 7 | de: 'Frame für Statistiken der elektronischen Servolenkung' 8 | type: 'can' 9 | periodicity: 100 # calculated 101.6 ms based on 0x208 10 | senders: 11 | - 'DAE' 12 | receivers: 13 | - 'BSI' 14 | 15 | signals: 16 | STEERING_TORQUE: 17 | bits: '1.7-1.0' 18 | type: 'int' 19 | factor: 0.25 20 | min: -32 21 | max: 32 22 | values: 23 | 0x7fff: 24 | en: 'Error' 25 | fr: 'erreur' 26 | de: 'Fehler' 27 | 28 | UNKNOWN_1: 29 | bits: '2.7-2.2' 30 | 31 | POWER_STEERING_WARNING_LIGHTS: 32 | bits: '2.1-2.0' 33 | values: 34 | 0x00: # 0b00 35 | en: 'Nothing to report' 36 | fr: 'Rien à signaler' 37 | de: 'Keine Fehler' 38 | 0x01: # 0b01 39 | en: 'Light up red warning light.' 40 | fr: "Allumer le voyant d'avertissement rouge." 41 | de: 'Erleuchte die rote Warnanzeige' 42 | 0x02: # 0b10 43 | en: 'Light up yellow warning light' 44 | fr: "Allumer le voyant d'avertissement jaune" 45 | de: 'Erleuchte die gelbe Warnanzeige' 46 | 0x03: # 0b11 - Not tested 47 | en: 'Light up yellow and red warning light' 48 | fr: "Témoin d'avertissement jaune et rouge allumé" 49 | de: 'Erleuchte die rote und gelbe Warnanzeige' 50 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/4F2.yml: -------------------------------------------------------------------------------- 1 | id: 0x4F2 2 | name: 'GENERIC_BATTERY_DATA' 3 | length: 8 4 | comment: 5 | en: 'This is data that is gatewated or gathered from/by the BSI and sent into the IS bus' 6 | fr: "Il s'agit de données qui sont contrôlées ou collectées depuis/par le BSI et envoyées dans le bus IS" 7 | de: 'Diese Daten kommen von anderen Bussen oder Kontakten am BSI über das BSI in den IS Bus' 8 | type: 'can' 9 | periodicity: 100 # calculated 99.97 ms 10 | senders: 11 | - 'BSI' 12 | receivers: [] 13 | 14 | signals: 15 | BATTERY_STATE_OF_CHARGE: 16 | bits: '1.7-2.6' 17 | type: 'float' 18 | factor: 0.01 19 | offset: 5 20 | min: 5 21 | max: 15.22 # Value before initializing I was to lazy to whip out a calculator 22 | UNKNOWN_1: 23 | bits: '2.5-2.4' 24 | CHARGE_MODE: 25 | bits: '2.3-2.2' 26 | values: 27 | 0x00: 28 | en: 'No charging' 29 | fr: 'Pas de charge' 30 | de: 'Kein Laden' 31 | 0x01: 32 | en: 'Charging Mode 1' 33 | fr: 'Mode de charge 1' 34 | de: 'Lademodus 1' 35 | 0x02: 36 | en: 'Charging Mode 2' 37 | fr: 'Mode de charge 2' 38 | de: 'Lademodus 2' 39 | 0x03: # Never encounterd in testing 40 | en: 'Invalid' 41 | fr: 'Invalide' 42 | de: 'Ungültig' 43 | UNKNOWN_2: 44 | bits: '2.1-2.0' 45 | UNKNWON_3_LOOKS_LIKE_VOLTAGE: # With factor and offset it stays at 10.48 which could be valid volts 46 | bits: '3.7-4.3' 47 | type: 'float' 48 | factor: 0.01 49 | offset: 5 50 | min: 5 51 | max: 15.22 # Value before initializing I was to lazy to whip out a calculator 52 | UNKNOWN_4: 53 | bits: '4.2-4.0' 54 | UNKNOWN_5: 55 | bits: '5.7-5.0' 56 | UNKNOWN_6: 57 | bits: '6.7-6.0' 58 | UNKNOWN_7: # constant in tests 59 | bits: '7.7-7.0' 60 | UNKNOWN_8: # constant in tests 61 | bits: '8.7-8.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/50D.yml: -------------------------------------------------------------------------------- 1 | id: 0x30D 2 | name: 'TRACTION_CONTROL_DATA' 3 | length: 7 4 | type: 'can' 5 | periodicity: 100 6 | senders: 7 | - 'ABS' 8 | receivers: 9 | - 'BSI' 10 | 11 | signals: 12 | FAULT_LIGHT: 13 | bits: '1.7' 14 | values: 15 | 0x00: 16 | en: 'No fault light illuminated' 17 | fr: 'Aucun voyant de défaut allumé' 18 | de: 'Fehlerlampe erleuchtet nicht.' 19 | 0x01: 20 | en: 'Illuminate fault light' 21 | fr: 'Allumer le voyant de défaut' 22 | de: 'Fehlerlampe erleuchtet.' 23 | UNKNOWN_1: 24 | bits: '1.6' 25 | TRACTION_SYSTEMS_ACTIVE: 26 | bits: '1.5' 27 | values: 28 | 0x00: 29 | en: 'No traction system is active' 30 | fr: "Aucun système de traction n'est actif" 31 | de: 'Es ist kein Stabilitätsprogramm aktiv' 32 | 0x01: 33 | en: 'A traction system is active' 34 | fr: 'Un système de traction est actif' 35 | de: 'Ein Stabilitätsprogramm ist aktiv' 36 | UNKNOWN_2: 37 | bits: '1.4-1.3' 38 | BREAK_PADS_WORN: 39 | bits: '1.2' 40 | values: 41 | 0x00: 42 | en: 'Breakpads not worn' 43 | fr: 'Plaquettes de frein non usées' 44 | de: 'Bremsbeläge sind nicht abgefahren' 45 | 0x01: 46 | en: 'Breakpads are worn' 47 | fr: 'Les plaquettes de frein sont usées' 48 | de: 'Bremsbeläge sind abgefahren' 49 | BREAK_FLUID_ALERT: 50 | bits: '1.1' 51 | values: 52 | 0x00: 53 | en: 'Break fluid is OK' 54 | fr: 'Aucun voyant de défaut allumé' 55 | de: 'Der Flüssigkeitsstand im Bremsflüssigkeitsbehälter ist ok.' 56 | 0x01: 57 | en: 'Break fluid is low' 58 | fr: 'Allumer le voyant de défaut' 59 | de: 'Der Flüssigkeitsstand im Bremsflüssigkeitsbehälter ist niedrigt' 60 | UNKNOWN_3: 61 | bits: '1.0' 62 | UNKNOWN_4: 63 | bits: '2.7-2.0' 64 | UNKNOWN_5: 65 | bits: '3.7-3.0' 66 | UNKNOWN_6: 67 | bits: '4.7-4.0' 68 | UNKNOWN_7: 69 | bits: '5.7-5.0' 70 | UNKNOWN_8: 71 | bits: '6.7-6.0' 72 | UNKNOWN_9: 73 | bits: '6.7-6.0' 74 | UNKNOWN_10: 75 | bits: '7.7-7.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/50E.yml: -------------------------------------------------------------------------------- 1 | # TODO: make it less sad! 2 | 3 | id: 0x50E 4 | name: 'GATEWAY_DATA_2' 5 | length: 8 6 | comment: 7 | en: 'This is data that is gatewated or gathered from/by the BSI and sent into the IS bus' 8 | fr: "Il s'agit de données qui sont contrôlées ou collectées depuis/par le BSI et envoyées dans le bus IS" 9 | de: 'Diese Daten kommen von anderen Bussen über das BSI in den IS Bus' 10 | type: 'can' 11 | periodicity: 100 # messured avg 99.97 ms 12 | senders: 13 | - BSI 14 | receivers: 15 | - CMM 16 | 17 | signals: 18 | UNKNOWN_1: # just 0x00 19 | bits: '1.7-1.0' 20 | 21 | UNKNOWN_2: # just 0x00 22 | bits: '2.7-2.0' 23 | 24 | UNKNOWN_3: # just 0x00 except bit 3.3 0 when engine on and 1 when engine off no further testing occured 25 | bits: '3.7-3.0' 26 | 27 | UNKNOWN_4: # just 0x00 except bit 4.2 is constant 1 28 | bits: '4.7-4.0' 29 | 30 | UNKNOWN_5: # just 0x00 wtf 31 | bits: '5.7-5.0' 32 | 33 | UNKNOWN_6: # just 0x00 wtf 34 | bits: '6.7-6.0' 35 | 36 | UNKNOWN_7: # just 0xFF something different at least 37 | bits: '7.7-7.0' 38 | 39 | UNKNOWN_8: # 0x0 and last 4 bits seem to change randomlly could not find cause 40 | bits: '8.7-8.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/50F.yml: -------------------------------------------------------------------------------- 1 | id: 0x50F 2 | name: 'DSG_STATUS' 3 | length: 6 4 | type: 'can' 5 | periodicity: 300 6 | senders: 7 | - 'DSG' 8 | receivers: 9 | - 'BSI' 10 | 11 | signals: 12 | STATUS_FRONT_LEFT: 13 | bits: '1.4-1.0' 14 | comment: 15 | en: 'Front left wheel status' 16 | fr: 'Etat de la roue avant gauche' 17 | values: 18 | 0x01: 19 | en: 'Punctured' 20 | fr: 'Crevaison' 21 | de: 'Platter Reifen' 22 | 0x02: 23 | en: 'Weakly deflated' 24 | fr: 'Faiblement degonflee' 25 | de: 'Etwas platter Reifen' 26 | 0x04: 27 | en: 'Strongly deflated' 28 | fr: 'Fortement degonflee' 29 | de: 'Stark platter Reifen' 30 | 0x08: 31 | en: 'Unknown' 32 | fr: 'Inconnu' 33 | de: 'Unbekannt' 34 | 0x10: 35 | en: 'OK' 36 | fr: 'OK' 37 | de: 'OK' 38 | 39 | STATUS_FRONT_RIGHT: 40 | bits: '2.4-2.0' 41 | comment: 42 | en: 'Front right wheel status' 43 | fr: 'Etat de la roue avant droite' 44 | values: 45 | 0x01: 46 | en: 'Punctured' 47 | fr: 'Crevaison' 48 | de: 'Platter Reifen' 49 | 0x02: 50 | en: 'Weakly deflated' 51 | fr: 'Faiblement degonflee' 52 | de: 'Etwas platter Reifen' 53 | 0x04: 54 | en: 'Strongly deflated' 55 | fr: 'Fortement degonflee' 56 | de: 'Stark platter Reifen' 57 | 0x08: 58 | en: 'Unknown' 59 | fr: 'Inconnu' 60 | de: 'Unbekannt' 61 | 0x10: 62 | en: 'OK' 63 | fr: 'OK' 64 | de: 'OK' 65 | 66 | STATUS_REAR_LEFT: 67 | bits: '3.4-3.0' 68 | comment: 69 | en: 'Rear left wheel status' 70 | fr: 'Etat de la roue arriere gauche' 71 | values: 72 | 0x01: 73 | en: 'Punctured' 74 | fr: 'Crevaison' 75 | de: 'Platter Reifen' 76 | 0x02: 77 | en: 'Weakly deflated' 78 | fr: 'Faiblement degonflee' 79 | de: 'Etwas platter Reifen' 80 | 0x04: 81 | en: 'Strongly deflated' 82 | fr: 'Fortement degonflee' 83 | de: 'Stark platter Reifen' 84 | 0x08: 85 | en: 'Unknown' 86 | fr: 'Inconnu' 87 | de: 'Unbekannt' 88 | 0x10: 89 | en: 'OK' 90 | fr: 'OK' 91 | de: 'OK' 92 | 93 | STATUS_REAR_RIGHT: 94 | bits: '4.4-4.0' 95 | comment: 96 | en: 'Rear left wheel status' 97 | fr: 'Etat de la roue arriere droite' 98 | values: 99 | 0x01: 100 | en: 'Punctured' 101 | fr: 'Crevaison' 102 | de: 'Platter Reifen' 103 | 0x02: 104 | en: 'Weakly deflated' 105 | fr: 'Faiblement degonflee' 106 | de: 'Etwas platter Reifen' 107 | 0x04: 108 | en: 'Strongly deflated' 109 | fr: 'Fortement degonflee' 110 | de: 'Stark platter Reifen' 111 | 0x08: 112 | en: 'Unknown' 113 | fr: 'Inconnu' 114 | de: 'Unbekannt' 115 | 0x10: 116 | en: 'OK' 117 | fr: 'OK' 118 | de: 'OK' 119 | 120 | SENSORS_STATUS: 121 | bits: '6.2-6.0' 122 | comment: 123 | en: 'Sensors status' 124 | fr: 'Etat des capteurs' 125 | values: 126 | 0x00: 127 | en: 'Unknown status' 128 | fr: 'Status inconnu' 129 | de: 'Unbekannter Status' 130 | 0x01: 131 | en: 'Sensor error' 132 | fr: 'Erreur sur un/des capteur(s)' 133 | de: 'Sensor Fehler' 134 | 0x02: 135 | en: 'Wheel pressure too low for weight' 136 | fr: 'Pression des roues trop faible pour le poids' 137 | de: 'Reifendruck zu niedrig für Gewicht' 138 | 0x03: 139 | en: 'Wheel pressure too low for speed' 140 | fr: 'Pression des roues trop faible pour la vitesse' 141 | de: 'Reifendruck zu niedrig für Geschwindigkeit' 142 | 0x04: 143 | en: 'Getting data' 144 | fr: 'Acquisition des donnees' 145 | de: 'Frage Daten ab' 146 | 0x07: 147 | en: 'OK' 148 | fr: 'OK' 149 | de: 'OK' 150 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/552.yml: -------------------------------------------------------------------------------- 1 | # TODO: make it less sad! 2 | 3 | id: 0x552 4 | name: 'CURRENT_TIME' 5 | length: 5 6 | comment: 7 | en: 'This is data that is gatewated by the BSI from the EMF node which handles the main clock' 8 | fr: "Il s'agit de données transmises par le BSI à partir du nœud EMF qui gère l'horloge principale" 9 | de: 'Diese Daten kommen über das BSI vom EMF welches die Hauptuhr des Autos ist.' 10 | type: 'can' 11 | periodicity: 1000 # rounded up ; messured avg 950.18 ms but this was over a network tunnel! 12 | senders: 13 | - 'BSI' 14 | receivers: 15 | - 'CMM' 16 | 17 | signals: 18 | SECONDS: 19 | bits: '1.7-3.4' 20 | type: 'uint' 21 | min: 0 22 | max: 86400 # 0xFF FF F -> 1048575 but 24h is only 86400 sec 23 | DAY: 24 | bits: '3.3-4.0' 25 | type: 'uint' 26 | min: 0 27 | max: 366 # max days in a leap year 28 | YEAR: 29 | bits: '5.7-5.0' 30 | min: 0 31 | max: 255 # 0xFF 32 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/588.yml: -------------------------------------------------------------------------------- 1 | # TODO: check by someone whose french; this is mostly google translate 2 | id: 0x588 3 | name: 'ENGINE_DATA_2' 4 | alt_names: [] 5 | length: 7 6 | comment: 7 | en: 'Engine Data 2' 8 | fr: 'Données du moteur 2' 9 | de: 'Generelle Motordaten 2' 10 | type: 'can' 11 | periodicity: 100 12 | senders: 13 | - 'CMM' # logically its the only thing that has direct access to the sensors 14 | receivers: 15 | - 'BSI' # needs to gateway it to other buses 16 | 17 | signals: 18 | UNKNOWN_1: # always FE00 19 | bits: '1.7-1.0' 20 | UNKNOWN_2: 21 | bits: '2.7-2.0' 22 | UNKNOWN_3: 23 | bits: '3.7-3.1' 24 | OIL_PRESSURE_ALERT: 25 | bits: '3.0' 26 | type: 'bool' 27 | comment: 28 | en: 'Oil pressure alert' 29 | fr: "Alerte de pression d'huile" 30 | de: 'Öldruck Warnung' 31 | values: 32 | 0x0: 33 | en: 'Oil pressure alert inactive' 34 | fr: "Pas d'alerte de pression d'huile" 35 | de: 'Keine Öldruck Warnung' 36 | 0x1: 37 | en: 'Oil pressure alert active' 38 | fr: "Alerte de pression d'huile" 39 | de: 'Öldruck Warnung' 40 | FUEL_CONSUMPTION_COUNTER: # Counter since in resets after max 41 | bits: '4.7-4.0' 42 | type: 'uint' 43 | comment: 44 | en: 'Fuel consumtion counter (seems to be inacurate)' 45 | fr: 'Consommation carburant (inexacte)' 46 | de: 'Kraftstoffverbrauch-Zähler (ungenau)' 47 | factor: 0.08 48 | min: 0 49 | max: 20.4 # 0xFF * 0.08 50 | unit: 'mL' 51 | 52 | # This value is very spikey so not sure and has some unexpected behavior 53 | # And ofen drops to 0 in neutral when throttling (diesel cmm) 54 | # In neutral follows RPM curve but with lower spikes downwards 55 | ENGINE_LOAD_UNSURE: 56 | bits: '5.7-5.0' 57 | comment: 58 | en: 'Engine load (not checked)' 59 | fr: 'Charge moteur (non vérifiée)' 60 | de: 'Motorlast (nicht überprüft)' 61 | UNKNOWN_4: 62 | bits: '6.7-6.0' 63 | UNKNOWN_5: 64 | bits: '7.7-7.0' 65 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/592.yml: -------------------------------------------------------------------------------- 1 | id: 0x592 2 | name: 'GATEWAY_DATA_3' 3 | length: 6 4 | comment: 5 | en: 'This is data that is gatewated or gathered from/by the BSI and sent into the IS bus' 6 | fr: "Il s'agit de données qui sont contrôlées ou collectées depuis/par le BSI et envoyées dans le bus IS" 7 | de: 'Diese Daten kommen von anderen Bussen über das BSI in den IS Bus' 8 | type: 'can' 9 | periodicity: 100 # messured avg 99.98 ms 10 | senders: 11 | - 'BSI' 12 | receivers: 13 | - 'CMM' 14 | 15 | signals: 16 | BATTERY_CHARGE_STATE: 17 | bits: '1.7-1.0' 18 | type: 'uint' 19 | factor: 1 20 | min: 0 21 | max: 100 # 255 but its in percent 22 | 23 | TEMPERATURE: 24 | bits: '2.7-2.0' 25 | type: 'int' 26 | factor: 0.5 27 | offset: -30 28 | min: -30 29 | max: 97 30 | UNKNOWN_1: 31 | bits: '3.7' 32 | 33 | WIPER_STATUS: 34 | bits: '3.6-3.4' 35 | values: 36 | 0x00: 37 | en: 'Wipers inactive' 38 | fr: 'Essuie-glaces inactifs' 39 | de: 'Scheibenwischen nicht aktiv' 40 | 0x01: 41 | en: 'Automatic Mode' 42 | fr: 'Mode automatique' 43 | de: 'Automatischer Modus' 44 | 0x02: 45 | en: 'First wiper speed' 46 | fr: "Première vitesse d'essuie-glace" 47 | de: 'Erstes Interval der Scheibenwischer' 48 | 0x04: 49 | en: 'Seconds wiper speed' 50 | fr: "Secondes de vitesse d'essuie-glace" 51 | de: 'Zweites Interval der Scheibenwischer' 52 | 53 | RAIN_SENSOR_WIPER_ACTIVATION: 54 | bits: '3.3-3.2' 55 | values: 56 | 0x00: 57 | en: 'Stop' 58 | fr: 'Arrêt' 59 | de: 'Stopp' 60 | 0x02: 61 | en: 'First wiper speed' 62 | fr: "Première vitesse d'essuie-glace" 63 | de: 'Erstes Interval der Scheibenwischer' 64 | 0x04: 65 | en: 'Seconds wiper speed' 66 | fr: "Secondes de vitesse d'essuie-glace" 67 | de: 'Zweites Interval der Scheibenwischer' 68 | 69 | UNKNOWN_2: 70 | bits: '3.1-3.0' 71 | 72 | UNKNOWN_3: 73 | bits: '4.7-4.0' 74 | 75 | UNKNOWN_4: 76 | bits: '5.7-5.0' 77 | 78 | UNKNOWN_5: 79 | bits: '6.7-6.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/60F.yml: -------------------------------------------------------------------------------- 1 | id: 0x60F 2 | name: 'DSG_PRESSURE' 3 | length: 8 4 | type: 'can' 5 | periodicity: 300 6 | senders: 7 | - 'DSG' 8 | receivers: 9 | - 'BSI' 10 | 11 | signals: 12 | PRESSURE_FRONT_LEFT: 13 | bits: '1.5-1.0' 14 | type: 'float' 15 | factor: 0.1 16 | offset: 0 17 | min: 0 18 | max: 6.4 19 | comment: 20 | en: 'Front left wheel pressure' 21 | fr: 'Pression roue avant gauche' 22 | de: 'Reifendruck vorne links' 23 | 24 | PRESSURE_FRONT_RIGHT: 25 | bits: '2.7-2.2' 26 | type: 'float' 27 | factor: 0.1 28 | offset: 0 29 | min: 0 30 | max: 6.4 31 | comment: 32 | en: 'Front right wheel pressure' 33 | fr: 'Pression roue avant droite' 34 | de: 'Reifendruck vorne rechts' 35 | 36 | PRESSURE_REAR_LEFT: 37 | bits: '2.1-3.4' 38 | type: 'float' 39 | factor: 0.1 40 | offset: 0 41 | min: 0 42 | max: 6.4 43 | comment: 44 | en: 'Rear left wheel pressure' 45 | fr: 'Pression roue arriere gauche' 46 | de: 'Reifendruck hinten links' 47 | 48 | PRESSURE_REAR_RIGHT: 49 | bits: '3.3-4.6' 50 | type: 'float' 51 | factor: 0.1 52 | offset: 0 53 | min: 0 54 | max: 6.4 55 | comment: 56 | en: 'Rear right wheel pressure' 57 | fr: 'Pression roue arriere droite' 58 | de: 'Reifendruck hinten rechts' 59 | 60 | DELTA_FRONT_LEFT: 61 | bits: '5.5-5.0' 62 | type: 'float' 63 | factor: 0.1 64 | offset: 0 65 | min: 0 66 | max: 6.4 67 | comment: 68 | en: 'Front left wheel pressure delta' 69 | fr: 'Delta pression roue avant gauche' 70 | de: 'Durchschnittlicher Reifendruck vorne links' 71 | 72 | DELTA_FRONT_RIGHT: 73 | bits: '6.7-6.2' 74 | type: 'float' 75 | factor: 0.1 76 | offset: 0 77 | min: 0 78 | max: 6.4 79 | comment: 80 | en: 'Front right wheel pressure delta' 81 | fr: 'Delta pression roue avant droite' 82 | de: 'Durchschnittlicher Reifendruck vorne rechts' 83 | 84 | DELTA_REAR_LEFT: 85 | bits: '6.1-7.4' 86 | type: 'float' 87 | factor: 0.1 88 | offset: 0 89 | min: 0 90 | max: 6.4 91 | comment: 92 | en: 'Rear left wheel pressure delta' 93 | fr: 'Delta pression roue arriere gauche' 94 | de: 'Durchschnittlicher Reifendruck hinten links' 95 | 96 | DELTA_REAR_RIGHT: 97 | bits: '7.3-8.6' 98 | type: 'float' 99 | factor: 0.1 100 | offset: 0 101 | min: 0 102 | max: 6.4 103 | comment: 104 | en: 'Rear right wheel pressure delta' 105 | fr: 'Delta pression roue avant droite' 106 | de: 'Durchschnittlicher Reifendruck hinten rechts' 107 | -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/612.yml: -------------------------------------------------------------------------------- 1 | id: 0x612 2 | name: 'GATEWAY_DATA_4' 3 | length: 5 4 | comment: 5 | en: 'This is data that is gatewated or gathered from/by the BSI and sent into the IS bus' 6 | fr: "Il s'agit de données qui sont contrôlées ou collectées depuis/par le BSI et envoyées dans le bus IS" 7 | de: 'Diese Daten kommen von anderen Bussen über das BSI in den IS Bus' 8 | type: 'can' 9 | periodicity: 100 # messured avg 99.98 ms 10 | senders: 11 | - 'BSI' 12 | receivers: 13 | - 'CMM' 14 | - 'BCP' 15 | 16 | signals: 17 | UNKNOWN_1: 18 | bits: '1.7-1.0' 19 | 20 | LEFT_TURN_SIGNAL: 21 | bits: '2.7' 22 | values: 23 | 0x00: 24 | en: 'Inactive' 25 | fr: 'Inactive' 26 | de: 'Deaktiviert' 27 | 0x01: 28 | en: 'Active' 29 | fr: 'Active' 30 | de: 'Aktiviert' 31 | 32 | RIGHT_TURN_SIGNAL: 33 | bits: '2.6' 34 | values: 35 | 0x00: 36 | en: 'Inactive' 37 | fr: 'Inactive' 38 | de: 'Deaktiviert' 39 | 0x01: 40 | en: 'Active' 41 | fr: 'Active' 42 | de: 'Aktiviert' 43 | 44 | UNKNOWN_2: # constant 0b10 45 | bits: '2.5-2.4' 46 | 47 | FRONT_FOG_LIGHTS: 48 | bits: '2.3' 49 | values: 50 | 0x00: 51 | en: 'Inactive' 52 | fr: 'Inactive' 53 | de: 'Deaktiviert' 54 | 0x01: 55 | en: 'Active' 56 | fr: 'Active' 57 | de: 'Aktiviert' 58 | 59 | HIGH_BEAM_LIGHTS: 60 | bits: '2.2' 61 | values: 62 | 0x00: 63 | en: 'Inactive' 64 | fr: 'Inactive' 65 | de: 'Deaktiviert' 66 | 0x01: 67 | en: 'Active' 68 | fr: 'Active' 69 | de: 'Aktiviert' 70 | 71 | LOW_BEAM_LIGHTS: 72 | bits: '2.1' 73 | values: 74 | 0x00: 75 | en: 'Inactive' 76 | fr: 'Inactive' 77 | de: 'Deaktiviert' 78 | 0x01: 79 | en: 'Active' 80 | fr: 'Active' 81 | de: 'Aktiviert' 82 | 83 | PARK_LIGHT: 84 | bits: '2.0' 85 | values: 86 | 0x00: 87 | en: 'Inactive' 88 | fr: 'Inactive' 89 | de: 'Deaktiviert' 90 | 0x01: 91 | en: 'Active' 92 | fr: 'Active' 93 | de: 'Aktiviert' 94 | UNKNOWN_3: 95 | bits: '3.7-3.0' 96 | 97 | UNKNOWN_4: 98 | bits: '4.7-4.0' 99 | 100 | UNKNOWN_5: 101 | bits: '5.7-5.0' -------------------------------------------------------------------------------- /buses/AEE2004.full/HS.IS/_DISCLAIMER.txt: -------------------------------------------------------------------------------- 1 | Playing with the IS bus can be dangerous, and improper wiring can cause important systems like ABS, ESP, power steering, the engine control unit, and possibly the BSI (electrical hearth of your car) to malfunction or, in the worst case, to burn out some chips on them! 2 | 3 | We do not recommend you to connect to this bus if you are not 100% certain what you are about to do. 4 | We are NOT responsible for any damage done or any wrong information obtained here! -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/036.yml: -------------------------------------------------------------------------------- 1 | id: 0x036 2 | name: 'BSI_COMMANDS' 3 | alt_names: ['COMMANDES_BSI'] 4 | length: 8 5 | type: 'can' 6 | periodicity: '100ms' 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | # All ECUs 11 | 12 | signals: 13 | # Unknown byte, with data in it 14 | UNKNOWN_1: 15 | bits: '1.7-1.0' 16 | unused: true 17 | 18 | # Unknown byte, with data in it 19 | UNKNOWN_2: 20 | bits: '2.7-2.0' 21 | unused: true 22 | 23 | ECO_MODE: 24 | bits: '3.7' 25 | comment: 26 | en: 'Energy economy mode status' 27 | fr: 'Status du mode economie energie' 28 | type: 'uint' 29 | values: 30 | 0x00: 31 | en: 'not in eco mode' 32 | fr: 'pas en mode eco' 33 | 0x01: 34 | en: 'in eco mode' 35 | fr: 'en mode eco' 36 | 37 | UNUSED_1: 38 | bits: '3.6-3.0' 39 | unused: true 40 | 41 | UNKNOWN_3: 42 | bits: '4.7-4.6' 43 | unused: true 44 | 45 | DAYNIGHT_STATUS: 46 | bits: '4.5' 47 | comment: 48 | en: 'Day/night status' 49 | fr: 'Status jour/nuit' 50 | type: 'uint' 51 | values: 52 | 0x00: 53 | en: 'day' 54 | fr: 'jour' 55 | 0x01: 56 | en: 'night' 57 | fr: 'nuit' 58 | 59 | DARK_MODE: 60 | bits: '4.4' 61 | comment: 62 | en: 'Dark mode status' 63 | fr: 'Status mode dark' 64 | type: 'uint' 65 | values: 66 | 0x00: 67 | en: 'not in dark mode' 68 | fr: 'pas en mode dark' 69 | 0x01: 70 | en: 'in dark mode' 71 | fr: 'en mode dark' 72 | 73 | BRIGHTNESS: 74 | bits: '4.3-4.0' 75 | comment: 76 | en: 'Backlight brightness' 77 | fr: 'Luminosite retroeclairage' 78 | type: 'uint' 79 | min: 0 80 | max: 15 81 | 82 | UNUSED_2: 83 | bits: '5.7' 84 | unused: true 85 | 86 | CLEAR_FAULTS: 87 | bits: '5.6' 88 | comment: 89 | en: 'Clear all faults command' 90 | fr: 'Demande effacement des defauts' 91 | type: 'uint' 92 | values: 93 | 0x00: 94 | en: 'no command' 95 | fr: 'pas de demande' 96 | 0x01: 97 | en: 'clear faults' 98 | fr: 'effacement defauts' 99 | 100 | DIAG_STATUS: 101 | bits: '5.5' 102 | comment: 103 | en: 'Diag session status' 104 | fr: 'Etat session de diagnostique' 105 | type: 'uint' 106 | values: 107 | 0x00: 108 | en: 'no diag session' 109 | fr: 'pas de session de diag' 110 | 0x01: 111 | en: 'diag session' 112 | fr: 'session de diag' 113 | 114 | UNUSED_3: 115 | bits: '5.4' 116 | unused: true 117 | 118 | LOG_FAULTS: 119 | bits: '5.3' 120 | comment: 121 | en: 'Enable/disable logging faults' 122 | fr: 'Active/desactive la memorisation des defauts' 123 | type: 'uint' 124 | values: 125 | 0x00: 126 | en: 'normal mode: log faults' 127 | fr: 'mode normal: memorisation des defauts' 128 | 0x01: 129 | en: 'disabled mode: no fault logging' 130 | fr: 'mode desactive: pas de memorisation des defauts' 131 | 132 | POWER_MANAGEMENT: 133 | bits: '5.2-5.0' 134 | comment: 135 | en: 'Power management status' 136 | fr: 'Etat gestion energie' 137 | type: 'uint' 138 | values: 139 | 0x00: 140 | en: 'sleep' 141 | fr: 'veille' 142 | 0x01: 143 | en: 'normal' 144 | fr: 'normal' 145 | 0x02: 146 | en: 'going to sleep' 147 | fr: 'mise en veille' 148 | 0x03: 149 | en: 'wakeup' 150 | fr: 'reveil' 151 | 0x04: 152 | en: 'no communications' 153 | fr: 'pas de communication' 154 | 155 | UNUSED_4: 156 | bits: '6.7-7.0' 157 | unused: true 158 | 159 | UNKNOWN_4: 160 | bits: '8.7-8.0' 161 | unused: true 162 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/0B6.yml: -------------------------------------------------------------------------------- 1 | id: 0x0B6 2 | name: 'BSI_FAST_DATA' 3 | alt_names: ['DONNEES_BSI_RAPIDES'] 4 | length: 8 5 | type: 'can' 6 | periodicity: '50ms' 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | - 'CMB' # for speed and rpms 11 | 12 | signals: 13 | ENGINE_SPEED: 14 | alt_names: ['VITM'] 15 | bits: '1.7-2.0' 16 | comment: 17 | en: 'Engine speed' 18 | fr: 'Regime moteur' 19 | units: 'rpm' 20 | 21 | CAR_SPEED: 22 | alt_names: ['VITV'] 23 | bits: '3.7-4.0' 24 | comment: 25 | en: 'Car speed' 26 | fr: 'Vitesse voiture' 27 | units: 'kph' 28 | 29 | TRAVEL_DISTANCE: 30 | alt_names: ['DIST'] 31 | bits: '5.7-6.0' 32 | comment: 33 | en: 'Current trip distance' 34 | fr: 'Distance parcourue' 35 | 36 | FUEL_CONSUMPTION: 37 | alt_names: ['CONSO'] 38 | bits: '7.7-7.0' 39 | comment: 40 | en: 'Current trip total fuel consumption' 41 | fr: 'Consommation de carburant' 42 | 43 | UNUSED_1: # This contains SECU_VITV and SECU_VITESSE 44 | bits: '8.7' 45 | unused: true 46 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/0E1.yml: -------------------------------------------------------------------------------- 1 | id: 0x0E1 2 | name: 'AAS_DATA' 3 | alt_names: ['DONNEES_AAS'] 4 | length: 7 5 | type: 'can' 6 | periodicity: '100ms' 7 | senders: 8 | - 'AAS' 9 | receivers: 10 | - 'EMF' 11 | - 'RADIO' # For audio 12 | 13 | signals: 14 | REAR_STATUS: 15 | bits: '1.7-1.5' 16 | comment: 17 | en: 'Rear AAS status' 18 | fr: 'Etat AAS arriere' 19 | values: 20 | 0x01: 21 | en: 'Error' 22 | fr: 'Defaut' 23 | 0x02: 24 | en: 'Disabled by button' 25 | fr: 'Desactive sur commande' 26 | 0x03: 27 | en: 'Disabled because of trailer' 28 | fr: 'Desactive sur presence remorque' 29 | 0x04: 30 | en: 'Active' 31 | fr: 'Active' 32 | 0x05: 33 | en: 'Waiting for data' 34 | fr: 'En attente de donnees' 35 | 0x06: 36 | en: 'Not working' 37 | fr: 'HS' 38 | 39 | FRONT_STATUS: 40 | bits: '1.4-1.2' 41 | comment: 42 | en: 'Front AAS status' 43 | fr: 'Etat AAS avant' 44 | values: 45 | 0x01: 46 | en: 'Error' 47 | fr: 'Defaut' 48 | 0x02: 49 | en: 'Disabled by button' 50 | fr: 'Desactive sur commande' 51 | 0x04: 52 | en: 'Active' 53 | fr: 'Active' 54 | 0x05: 55 | en: 'Waiting for data' 56 | fr: 'En attente de donnees' 57 | 0x06: 58 | en: 'Not working' 59 | fr: 'HS' 60 | 61 | BLIND_SPOT_RIGHT: 62 | bits: '1.1' 63 | comment: 64 | en: 'Something in right blind spot' 65 | fr: 'Presence objet angle mort droit' 66 | values: 67 | 0x00: 68 | en: 'None' 69 | fr: 'Aucun' 70 | 0x01: 71 | en: 'Presence of object' 72 | fr: 'Objet present' 73 | 74 | 75 | BLIND_SPOT_LEFT: 76 | bits: '1.0' 77 | comment: 78 | en: 'Something in left blind spot' 79 | fr: 'Presence objet angle mort gauche' 80 | values: 81 | 0x00: 82 | en: 'None' 83 | fr: 'Aucun' 84 | 0x01: 85 | en: 'Presence of object' 86 | fr: 'Objet present' 87 | 88 | 89 | SOUND_LR: 90 | bits: '2.7-2.6' 91 | comment: 92 | en: 'Left/Right sound' 93 | fr: 'Son en gauche/droite' 94 | values: 95 | 0x00: 96 | en: 'No sound' 97 | fr: 'Pas de son' 98 | 0x01: 99 | en: 'Left' 100 | fr: 'Gauche' 101 | 0x02: 102 | en: 'Right' 103 | fr: 'Droit' 104 | 0x03: 105 | en: 'Both' 106 | fr: 'Les deux' 107 | 108 | SOUND_FR: 109 | bits: '2.5' 110 | comment: 111 | en: 'Front/Rear sound' 112 | fr: 'Son avant/arriere' 113 | values: 114 | 0x00: 115 | en: 'Rear' 116 | fr: 'Arriere' 117 | 0x01: 118 | en: 'Front' 119 | fr: 'Avant' 120 | 121 | SOUND_ENABLED: 122 | bits: '2.4' 123 | comment: 124 | en: 'Audio enabled' 125 | fr: 'Son active' 126 | values: 127 | 0x00: 128 | en: 'Disabled' 129 | fr: 'Desactive' 130 | 0x01: 131 | en: 'Enabled' 132 | fr: 'Active' 133 | 134 | BLIND_STATUS: 135 | bits: '2.3-2.1' 136 | comment: 137 | en: 'Blind spot status' 138 | fr: 'Etat angle mort' 139 | values: 140 | 0x00: 141 | en: 'Disabled' 142 | fr: 'Desactive' 143 | 0x01: 144 | en: 'Enabled' 145 | fr: 'Active' 146 | 0x04: 147 | en: 'Disabled on command' 148 | fr: 'Desactive sur commande' 149 | 0x07: 150 | en: 'Error' 151 | fr: 'Erreur' 152 | 153 | REAR_LEFT_STATUS: 154 | bits: '4.7-4.5' 155 | comment: 156 | en: 'Rear left distance' 157 | fr: 'Distance arriere gauche' 158 | min: 0 159 | max: 7 160 | unit: 'zone' 161 | 162 | REAR_MIDDLE_STATUS: 163 | bits: '4.4-4.2' 164 | comment: 165 | en: 'Rear middle distance' 166 | fr: 'Distance arriere milieu' 167 | min: 0 168 | max: 7 169 | unit: 'zone' 170 | 171 | REAR_RIGHT_STATUS: 172 | bits: '5.7-5.5' 173 | comment: 174 | en: 'Rear right distance' 175 | fr: 'Distance arriere droit' 176 | min: 0 177 | max: 7 178 | unit: 'zone' 179 | 180 | FRONT_LEFT_STATUS: 181 | bits: '5.4-5.2' 182 | comment: 183 | en: 'Front left distance' 184 | fr: 'Distance avant gauche' 185 | min: 0 186 | max: 7 187 | unit: 'zone' 188 | 189 | FRONT_MIDDLE_STATUS: 190 | bits: '6.7-6.5' 191 | comment: 192 | en: 'Front middle distance' 193 | fr: 'Distance avant milieu' 194 | min: 0 195 | max: 7 196 | unit: 'zone' 197 | 198 | FRONT_RIGHT_STATUS: 199 | bits: '6.4-6.2' 200 | comment: 201 | en: 'Front right distance' 202 | fr: 'Distance avant droit' 203 | min: 0 204 | max: 7 205 | unit: 'zone' 206 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/12B.yml: -------------------------------------------------------------------------------- 1 | id: 0x12B 2 | name: 'ROOF_COMMANDS' 3 | length: 1 4 | type: 'can' 5 | periodicity: '1000ms' 6 | senders: 7 | - 'BSI' 8 | receivers: 9 | - 'BTE' 10 | 11 | signals: 12 | BTE_LOCK: 13 | bits: '1.7' 14 | comment: 15 | en: 'BTE is unlocked' 16 | fr: 'Deverouillage BTE' 17 | values: 18 | 0x00: 19 | en: 'Locked' 20 | fr: 'Verouille' 21 | 0x01: 22 | en: 'Unlocked' 23 | fr: 'Deverouille' 24 | 25 | UNUSED_1: 26 | bits: '1.6-1.1' 27 | unused: true 28 | 29 | BTE_TRUNK_LOCK: # As on the CCs it's the BTE that manage the trunk... 30 | bits: '1.0' 31 | comment: 32 | en: 'Trunk is locked' 33 | fr: 'Verouillage coffre' 34 | values: 35 | 0x00: 36 | en: 'Unlocked' 37 | fr: 'Deverouille' 38 | 0x01: 39 | en: 'Locked' 40 | fr: 'Verouille' 41 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/161.yml: -------------------------------------------------------------------------------- 1 | id: 0x161 2 | name: 'BSI_GAUGES' 3 | alt_names: ['ETAT_BSI_TEMP_NIVEAU'] 4 | length: 7 5 | type: 'can' 6 | periodicity: '500ms' 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | - 'CMB' 11 | 12 | signals: 13 | UNUSED_1: # RELANCE_NIV_HUILE is here 14 | bits: '1.7-2.0' 15 | unused: true 16 | 17 | OIL_TEMPERATURE: 18 | bits: '3.7-3.0' 19 | alt_names: ['T_HUILE'] 20 | comment: 21 | en: 'Oil temperature' 22 | fr: 'Temperature huile moteur' 23 | 24 | FUEL_LEVEL: 25 | bits: '4.7-4.0' 26 | alt_names: ['NIV_CRB'] 27 | comment: 28 | en: 'Fuel level' 29 | fr: 'Niveau carburant' 30 | 31 | OIL_LEVEL: 32 | bits: '7.7-7.0' 33 | alt_names: ['NIV_HUILE'] 34 | comment: 35 | en: 'Oil level' 36 | fr: 'Niveau huile moteur' 37 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/165.yml: -------------------------------------------------------------------------------- 1 | id: 0x165 2 | name: 'RADIO_STATUS_GENERAL' 3 | alt_names: ['ETAT_RADIO_GEN_GEN'] 4 | length: 4 5 | comment: 6 | en: 'General status of the radio' 7 | fr: 'Etat general de la radio' 8 | type: 'can' 9 | periodicity: '100ms' 10 | senders: 11 | - 'RADIO' 12 | receivers: 13 | - 'BSI' 14 | - 'EMF' 15 | 16 | signals: 17 | POWER: # also it's original name 18 | bits: '1.7' 19 | values: 20 | 0x00: 21 | en: 'Radio disabled' 22 | fr: 'Radio eteinte' 23 | 0x01: 24 | en: 'Radio enabled' 25 | fr: 'Radio allumee' 26 | 27 | AMPLI_ON: # also it's original name 28 | bits: '1.6' 29 | values: 30 | 0x00: 31 | en: 'Amplified disabled' 32 | fr: 'Amplificateur eteint' 33 | 0x01: 34 | en: 'Amplified enabled' 35 | fr: 'Amplificateur allume' 36 | 37 | MUTE: 38 | bits: '1.5' 39 | alt_names: ['MUTE_ACT'] 40 | values: 41 | 0x00: 42 | en: 'Not muted' 43 | fr: 'Non mute' 44 | 0x01: 45 | en: 'Muted' 46 | fr: 'Mute' 47 | 48 | UNUSED_1: 49 | bits: '1.4' 50 | unused: true 51 | 52 | BI_TUNER: # also it's original name 53 | bits: '1.3' 54 | values: 55 | 0x00: 56 | en: 'No bi-tuner' 57 | fr: 'Pas de bi-tuner' 58 | 0x01: 59 | en: 'Bi-tuner' 60 | fr: 'Bi-tuner' 61 | 62 | HIFI: # also it's original name 63 | bits: '1.2' 64 | values: 65 | 0x00: 66 | en: 'No hi-fi' 67 | fr: 'Pas de hi-fi' 68 | 0x01: 69 | en: 'Hi-fi' 70 | fr: 'Hi-fi' 71 | 72 | UNUSED_2: # really unused? always 0 73 | bits: '1.1-1.0' 74 | unused: true 75 | 76 | TUN_SRC: # also original name 77 | bits: '2.7' 78 | values: 79 | 0x00: 80 | en: 'No tuner available' 81 | fr: 'Pas de tuner disponible' 82 | 0x01: 83 | en: 'Tuner available' 84 | fr: 'Tuner disponible' 85 | 86 | CD_SRC: # also original name 87 | bits: '2.6-2.5' 88 | values: 89 | 0x00: 90 | en: 'No internal CD player' 91 | fr: 'Pas de lecteur CD interne' 92 | 0x01: 93 | en: 'No disk available' 94 | fr: 'Pas de disque disponible' 95 | 0x02: 96 | en: 'Player and disk available' 97 | fr: 'Lecteur et disque disponibles' 98 | 99 | CDC_SRC: # also original name 100 | bits: '2.4-2.3' 101 | values: 102 | 0x00: 103 | en: 'No internal CD player' 104 | fr: 'Pas de lecteur CD interne' 105 | 0x01: 106 | en: 'No disk available' 107 | fr: 'Pas de disque disponible' 108 | 0x02: 109 | en: 'Player and disk available' 110 | fr: 'Lecteur et disque disponibles' 111 | 112 | USB_SRC: # Also original name 113 | bits: '2.2' 114 | values: 115 | 0x00: 116 | en: 'No USB available' 117 | fr: 'USB non disponible' 118 | 0x01: 119 | en: 'USB available' 120 | fr: 'USB disponible' 121 | 122 | UNUSED_3: # Probably contains BT_SRC, and maybe SOURCE_KML 123 | bits: '2.1-2.0' 124 | unused: true 125 | 126 | SRC_SEL: # also original name 127 | bits: '3.7-3.4' 128 | comment: 129 | en: 'Selected audio source' 130 | fr: 'Source audio selectionnee' 131 | values: 132 | 0x00: 133 | en: 'None' 134 | fr: 'Aucune' 135 | 0x01: 136 | en: 'Tuner' 137 | fr: 'Tuner' 138 | 0x02: 139 | en: 'CD (internal)' 140 | fr: 'CD (interne)' 141 | 0x03: 142 | en: 'CD changer' 143 | fr: 'Changeur CD' 144 | 0x04: 145 | en: 'Aux 1' 146 | fr: 'Aux 1' 147 | 0x05: 148 | en: 'Aux 2' 149 | fr: 'Aux 2' 150 | 0x06: 151 | en: 'USB' 152 | fr: 'USB' 153 | 0x07': 154 | en: 'Bluetooth' 155 | fr: 'Bluetooth' 156 | 157 | NO_SRC: # also original name 158 | bits: '3.3-3.0' 159 | comment: 160 | en: 'Audio source not available' 161 | fr: 'Source audio non-disponible' 162 | values: 163 | 0x00: 164 | en: 'None' 165 | fr: 'Aucune' 166 | 0x01: 167 | en: 'Tuner' 168 | fr: 'Tuner' 169 | 0x02: 170 | en: 'CD (internal)' 171 | fr: 'CD (interne)' 172 | 0x03: 173 | en: 'CD changer' 174 | fr: 'Changeur CD' 175 | 0x04: 176 | en: 'Aux 1' 177 | fr: 'Aux 1' 178 | 0x05: 179 | en: 'Aux 2' 180 | fr: 'Aux 2' 181 | 0x06: 182 | en: 'USB' 183 | fr: 'USB' 184 | 0x07: 185 | en: 'Bluetooth' 186 | fr: 'Bluetooth' 187 | 188 | UNUSED_4: # to be checked 189 | bits: '4.7-4.6' 190 | unused: true 191 | 192 | MP3_AVAILABLE: 193 | bits: '4.5' 194 | alt_names: ['FMT_COMP_AUDIO'] 195 | values: 196 | 0x00: 197 | en: 'MP3 not available' 198 | fr: 'MP3 non disponible' 199 | 0x01: 200 | en: 'MP3 available' 201 | fr: 'MP3 disponible' 202 | 203 | UNUSED_5: 204 | bits: '4.4' 205 | unused: true 206 | 207 | DIGITAL_RADIO: 208 | bits: '4.3-4.2' 209 | alt_names: ['RADIO_NUM'] 210 | values: 211 | 0x00: 212 | en: 'No digital radio' 213 | fr: 'Radio numerique non disponible' 214 | 0x01: 215 | en: 'DAB digital radio' 216 | fr: 'Radio numerique DAB' 217 | 0x02: 218 | en: 'DVBT digital radio' 219 | fr: 'Radio numerique DVBT' 220 | 221 | UNUSED_6: 222 | bits: '4.1-4.0' 223 | unused: true 224 | 225 | # Missing signals: 226 | # BT_SRC -> bluetooth source 227 | # COMP_DYN -> dynamic compression/VBR mp3 228 | # MISE_A_ON_RADIO -> radio starting up? 229 | # MUTE_ACT_MIXED_CHANNEL 230 | # SOURCE_KML -> phone input 231 | # SRC_MIX 232 | # TIMESHIFT_HOLD_ON 233 | # TYPE_SRC_SEL_USB 234 | # There's 10 unused bits, beside TYPE_SRC_SEL_USB or SRC_MIX, each signal is probably 1 bit each 235 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/1A1.yml: -------------------------------------------------------------------------------- 1 | id: 0x1A1 2 | name: 'BSI_DISPLAY_MESSAGE' 3 | alt_names: ['BSI_CDE_PTR_MESSAGE'] 4 | length: 8 5 | type: 'can' 6 | periodicity: '200ms' 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | - 'EMF' 11 | - 'CMB' # After it went to MATT 12 | - 'VTH' 13 | 14 | signals: 15 | DISPLAY_MESSAGE: 16 | bits: '1.7' 17 | alt_names: ['NOUV_MESS'] 18 | comment: 19 | en: 'Display new message' 20 | fr: 'Afficher nouveau message' 21 | values: 22 | 0x00: 23 | en: 'No new message' 24 | fr: 'Aucun nouveau message' 25 | 0x01: 26 | en: 'New message' 27 | fr: 'Nouveau message' 28 | 29 | MESSAGE_ID: 30 | bits: '1.6-2.0' 31 | alt_names: ['POINT_MESS'] 32 | comment: 33 | en: 'Message number' 34 | fr: 'Numero du message' 35 | 36 | DEST_EMF: 37 | bits: '3.7' 38 | alt_names: ['MEDIA1'] 39 | comment: 40 | en: 'EMF should display the message' 41 | fr: 'Le destinataire EMF doit afficher le message' 42 | values: 43 | 0x00: 44 | en: 'No' 45 | fr: 'Non' 46 | 0x01: 47 | en: 'Yes' 48 | fr: 'Oui' 49 | 50 | DEST_CMB: 51 | bits: '3.6' 52 | alt_names: ['MEDIA2'] 53 | comment: 54 | en: 'CMB should display the message' 55 | fr: 'Le destinataire CMB doit afficher le message' 56 | values: 57 | 0x00: 58 | en: 'No' 59 | fr: 'Non' 60 | 0x01: 61 | en: 'Yes' 62 | fr: 'Oui' 63 | 64 | DEST_VTH: 65 | bits: '3.5' 66 | alt_names: ['MEDIA3'] 67 | comment: 68 | en: 'VTH should display the message' 69 | fr: 'Le destinataire VTH doit afficher le message' 70 | values: 71 | 0x00: 72 | en: 'No' 73 | fr: 'Non' 74 | 0x01: 75 | en: 'Yes' 76 | fr: 'Oui' 77 | 78 | UNUSED_1: # CHECK_COURS and PRIORITE are here, maybe INTERD_PHASE_DEM also 79 | bits: '3.4-3.0' 80 | unused: true 81 | 82 | MESSAGE_ARGS: 83 | bits: '4.7-8.0' 84 | alt_names: ['PARAM_PTR'] 85 | comment: 86 | en: 'Message arguments' 87 | fr: 'Parametres du message' 88 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/1A5.yml: -------------------------------------------------------------------------------- 1 | id: 0x1A5 2 | name: 'RADIO_STATUS_VOLUME' 3 | alt_names: ['ETAT_RADIO_GEN_VOL'] 4 | length: 1 5 | comment: 6 | en: 'Radio volume' 7 | fr: 'Volume de la radio' 8 | type: 'can' 9 | periodicity: '500ms' 10 | senders: 11 | - 'RADIO' 12 | receivers: 13 | - 'EMF' # To display volume changes 14 | 15 | signals: 16 | VOLUME_CHANGING: 17 | bits: '1.7-1.5' 18 | comment: 19 | en: 'Volume is changing' 20 | fr: 'Le volume est en cours de changement' 21 | type: 'uint' 22 | values: 23 | 0x00: 24 | en: 'Changing' 25 | fr: 'Changement en cours' 26 | 0x07: 27 | en: 'Not changing' 28 | fr: 'Pas de changement' 29 | 30 | VOLUME: 31 | bits: '1.4-1.0' 32 | comment: 33 | en: 'Current volume' 34 | fr: 'Volume' 35 | type: 'uint' 36 | min: 0 37 | max: 30 38 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/1A8.yml: -------------------------------------------------------------------------------- 1 | id: 0x1A8 2 | name: 'SPEED_CONTROL' 3 | alt_names: ['GESTION_VITESSE'] 4 | length: 8 5 | type: 'can' 6 | periodicity: '200ms' 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | - 'CMB' # to display it 11 | 12 | signals: 13 | SPEED_CONTROL_TYPE: 14 | bits: '1.7-1.6' 15 | comment: 16 | en: 'Speed control type' 17 | fr: 'Type controle vitesse' 18 | values: 19 | 0x00: 20 | en: 'None' 21 | fr: 'Aucune' 22 | 0x01: 23 | en: 'Regulator' 24 | fr: 'Regulateur' 25 | 0x02: 26 | en: 'Limiter' 27 | fr: 'Limiter' 28 | 29 | UNUSED_1: 30 | bits: '1.5-1.2' 31 | unused: true 32 | 33 | CONTROL_UNIT: 34 | bits: '1.1' 35 | comment: 36 | en: 'Units to display' 37 | fr: 'Unite a afficher' 38 | values: 39 | 0x00: 40 | en: 'kph' 41 | fr: 'km/h' 42 | 0x01: 43 | en: 'mph' 44 | fr: 'mph' 45 | 46 | SET_SPEED: 47 | bits: '2.7-3.0' 48 | comment: 49 | en: 'Speed set by the user' 50 | fr: 'Consigne vitesse' 51 | 52 | UNUSED_2: 53 | bits: '6.7-8.0' 54 | unused: true 55 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/1D0.yml: -------------------------------------------------------------------------------- 1 | id: 0x1D0 2 | name: 'CLIM_STATUS' 3 | length: 7 4 | comment: 5 | en: 'Climate control panel status' 6 | fr: 'Etat des commandes climatisation' 7 | type: 'can' 8 | periodicity: '500ms' 9 | senders: 10 | - 'CLIM' 11 | receivers: 12 | - 'BSI' 13 | 14 | signals: 15 | UNUSED_1: 16 | bits: '1.7' 17 | unused: true 18 | 19 | REAR_WINDSHIELD_HEAT: 20 | bits: '1.6' 21 | 22 | AUTO: # need to work more on this one 23 | bits: '1.5-1.0' 24 | 25 | UNUSED_2: # weird that this is unused, is it really? 26 | bits: '2.7-2.0' 27 | unused: true 28 | 29 | UNUSED_3: # weird as well 30 | bits: '3.7-3.3' 31 | unused: true 32 | 33 | FAN_SPEED: 34 | bits: '3.2-3.0' 35 | comment: 36 | en: 'Fan speed' 37 | fr: 'Vitesse du pulseur' 38 | type: 'uint' 39 | min: 0 40 | max: 7 41 | 42 | DIRECTION_LEFT: 43 | bits: '4.7-4.4' 44 | comment: 45 | en: 'Left zone direction' 46 | fr: 'Direction de la zone gauche' 47 | values: 48 | # 0x0000 when auto maybe? to be confirmed 49 | 0x01: 50 | en: 'Up (when auto/windshield blowing' 51 | fr: 'Haut (en mode auto/avec option degivrage)' 52 | 0x02: 53 | en: 'Down' 54 | fr: 'Bas' 55 | 0x03: 56 | en: 'Front' 57 | fr: 'Devant' 58 | 0x04: 59 | en: 'Up' 60 | fr: 'Haut' 61 | 0x05: 62 | en: 'Front+Down' 63 | fr: 'Devant+Bas' 64 | 0x06: 65 | en: 'Up+Down' 66 | fr: 'Haut+Bas' 67 | # for some reason 0x07 and 0x08 doesn't exists, maybe there's Up+Front in it? 68 | 69 | DIRECTION_RIGHT: 70 | bits: '4.3-4.0' 71 | comment: 72 | en: 'Right zone direction' 73 | fr: 'Direction pour la zone droite' 74 | values: 75 | # 0x0000 when auto maybe? to be confirmed 76 | 0x01: 77 | en: 'Up (when auto/windshield blowing' 78 | fr: 'Haut (en mode auto/avec option degivrage)' 79 | 0x02: 80 | en: 'Down' 81 | fr: 'Bas' 82 | 0x03: 83 | en: 'Front' 84 | fr: 'Devant' 85 | 0x04: 86 | en: 'Up' 87 | fr: 'Haut' 88 | 0x05: 89 | en: 'Front+Down' 90 | fr: 'Devant+Bas' 91 | 0x06: 92 | en: 'Up+Down' 93 | fr: 'Haut+Bas' 94 | # for some reason 0x07 and 0x08 doesn't exists, maybe there's Up+Front in it? 95 | 96 | UNUSED_4: # Didn't found any use for it, always 0 97 | bits: '5.7-5.6' 98 | unused: true 99 | 100 | MODE: 101 | bits: '5.5-5.4' 102 | comment: 103 | en: 'Air mode' 104 | fr: 'Mode gestion' 105 | values: 106 | 0x00: 107 | en: 'Auto' 108 | fr: 'Auto' 109 | 0x01: 110 | en: 'Auto+Windshield blowing' 111 | fr: 'Auto+Windshield blowing' 112 | 0x02: 113 | en: 'Recycling disabled' 114 | fr: 'Recyclage desactive' 115 | 0x03: 116 | en: 'Recycling enabled' 117 | fr: 'Recyclage active' 118 | 119 | UNUSED_5: # No use found, always 0 120 | bits: '5.3-5.0' 121 | unused: true 122 | 123 | TEMP_LEFT: 124 | bits: '6.7-6.0' 125 | comment: 126 | en: 'Left zone temperature' 127 | fr: 'Temperature de la zone gauche' 128 | values: 129 | 0x00: 130 | en: 'LO' 131 | fr: 'LO' 132 | 0x01: 133 | en: '57f' 134 | fr: '14c' 135 | 0x02: 136 | en: '59f' 137 | fr: '15c' 138 | 0x03: 139 | en: '61f' 140 | fr: '16c' 141 | 0x04: 142 | en: '63f' 143 | fr: '17c' 144 | 0x05: 145 | en: '65f' 146 | fr: '18c' 147 | 0x06: 148 | en: '66f' 149 | fr: '18.5c' 150 | 0x07: 151 | en: '67f' 152 | fr: '19c' 153 | 0x08: 154 | en: '68f' 155 | fr: '19.5c' 156 | 0x09: 157 | en: '69f' 158 | fr: '20c' 159 | 0x0A: 160 | en: '70f' 161 | fr: '20.5c' 162 | 0x0B: 163 | en: '71f' 164 | fr: '21c' 165 | 0x0C: 166 | en: '72f' 167 | fr: '21.5c' 168 | 0x0D: 169 | en: '73f' 170 | fr: '22c' 171 | 0x0E: 172 | en: '74f' 173 | fr: '22.5c' 174 | 0x0F: 175 | en: '75f' 176 | fr: '23c' 177 | 0x10: 178 | en: '76f' 179 | fr: '23.5c' 180 | 0x11: 181 | en: '77f' 182 | fr: '24c' 183 | 0x12: 184 | en: '79f' 185 | fr: '25c' 186 | 0x13: 187 | en: '71f' 188 | fr: '26c' 189 | 0x14: 190 | en: '72f' 191 | fr: '27c' 192 | 0x15: 193 | en: '73f' 194 | fr: '28c' 195 | 0x16: 196 | en: 'HI' 197 | fr: 'HI' 198 | 199 | TEMP_RIGHT: 200 | bits: '7.7-7.0' 201 | values: 202 | 0x00: 203 | en: 'LO' 204 | fr: 'LO' 205 | 0x01: 206 | en: '57f' 207 | fr: '14c' 208 | 0x02: 209 | en: '59f' 210 | fr: '15c' 211 | 0x03: 212 | en: '61f' 213 | fr: '16c' 214 | 0x04: 215 | en: '63f' 216 | fr: '17c' 217 | 0x05: 218 | en: '65f' 219 | fr: '18c' 220 | 0x06: 221 | en: '66f' 222 | fr: '18.5c' 223 | 0x07: 224 | en: '67f' 225 | fr: '19c' 226 | 0x08: 227 | en: '68f' 228 | fr: '19.5c' 229 | 0x09: 230 | en: '69f' 231 | fr: '20c' 232 | 0x0A: 233 | en: '70f' 234 | fr: '20.5c' 235 | 0x0B: 236 | en: '71f' 237 | fr: '21c' 238 | 0x0C: 239 | en: '72f' 240 | fr: '21.5c' 241 | 0x0D: 242 | en: '73f' 243 | fr: '22c' 244 | 0x0E: 245 | en: '74f' 246 | fr: '22.5c' 247 | 0x0F: 248 | en: '75f' 249 | fr: '23c' 250 | 0x10: 251 | en: '76f' 252 | fr: '23.5c' 253 | 0x11: 254 | en: '77f' 255 | fr: '24c' 256 | 0x12: 257 | en: '79f' 258 | fr: '25c' 259 | 0x13: 260 | en: '71f' 261 | fr: '26c' 262 | 0x14: 263 | en: '72f' 264 | fr: '27c' 265 | 0x15: 266 | en: '73f' 267 | fr: '28c' 268 | 0x16: 269 | en: 'HI' 270 | fr: 'HI' 271 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/1DF.yml: -------------------------------------------------------------------------------- 1 | # Everything french in this yml was translated using https://translate.google.com/ 2 | id: 0x1DF 3 | name: 'BLUETOOTH_PARING' # eductaed guess 4 | alt_names: [] 5 | length: 4 6 | comment: # educated guess 7 | en: 'Contains information about the bluetooth device and the music list' 8 | fr: 'Contient des informations sur le périphérique Bluetooth et la liste de musique' 9 | type: 'can' 10 | senders: 11 | receivers: 12 | 13 | signals: 14 | UNUSED_1: 15 | bits: '1.0' 16 | LIST_ACCESS: 17 | bits: '1.1-1.2' 18 | values: 19 | 0x00: 20 | en: "None" 21 | fr: "Aucun" 22 | 0x01: 23 | en: "Direct Access" 24 | fr: "Accès direct" 25 | 0x02: 26 | en: "Indirect Access" 27 | fr: "Accès indirect" 28 | MUSIC_LIST_SORTING: 29 | bits: '1.3-1.5' 30 | values: 31 | 0x00: 32 | en: "None" 33 | fr: "Aucun" 34 | 0x01: 35 | en: "By directory" 36 | fr: "Par répertoire" 37 | 0x02: 38 | en: "By artist" 39 | fr: "Par artiste" 40 | 0x03: 41 | en: "By genre" 42 | fr: "Par genre" 43 | 0x04: 44 | en: "By playlist" 45 | fr: "Par playlist" 46 | ACCESS_TYPE: 47 | bits: '1.6-1.7' 48 | values: 49 | 0x00: 50 | en: "None" 51 | fr: "Aucun" 52 | 0x01: 53 | en: "Phonebook" 54 | fr: "Répertoire" 55 | 0x02: 56 | en: "Log call" 57 | fr: "Journal d'appel" 58 | 0x03: 59 | en: "Services" 60 | fr: "Services" 61 | 0x04: 62 | en: "By playlist" 63 | fr: "Par playlist" 64 | CURRENT_CALL_ACTION: 65 | bits: '2.6-2.7' 66 | values: 67 | 0x00: 68 | en: "None" 69 | fr: "Aucun" 70 | 0x01: 71 | en: "Hangup" 72 | fr: "Raccrocher" 73 | 0x02: 74 | en: "Switch" 75 | fr: "Changer" 76 | INBOUND_CALL_ACTION: 77 | bits: '2.5-2.4' 78 | values: 79 | 0x00: 80 | en: "None" 81 | fr: "Aucun" 82 | 0x01: 83 | en: "Refuse" 84 | fr: "Refuser" 85 | 0x02: 86 | en: "Accept" 87 | fr: "Accepter" 88 | SECRET_MODE_ACTIVATION: 89 | bits: '2.3' 90 | REQUEST_RESON: 91 | bits: '3.6-3.7' 92 | values: 93 | 0x00: 94 | en: "Not Requested" 95 | fr: "Non demandé" 96 | 0x01: 97 | en: "To Delete" 98 | fr: "Pour supprimer" 99 | 0x02: 100 | en: "To List" 101 | fr: "À la liste" 102 | 0x03: 103 | en: "To Pair" 104 | fr: "À jumeler" 105 | ACCEPT_PAIRING_REQUEST: 106 | bits: '3.4-3.5' 107 | values: 108 | 0x00: 109 | en: "Ignore request" 110 | fr: "Ignorer la demande" 111 | 0x01: 112 | en: "Ignore request" 113 | fr: "Ignorer la demande" 114 | 0x02: 115 | en: "Accept request" 116 | fr: "Accepter la demande" 117 | OVERWRITE_DATA: 118 | bits: '3.2-3.3' 119 | values: 120 | 0x00: 121 | en: "Do not overwrite" 122 | fr: "Ne pas écraser" 123 | 0x01: 124 | en: "Do not overwrite" 125 | fr: "Ne pas écraser" 126 | 0x02: 127 | en: "Overwrite" 128 | fr: "Écraser" 129 | DELETE_PAIRED_PHONE: 130 | bits: '3.2-3.3' 131 | values: 132 | 0x00: 133 | en: "No" 134 | fr: "Non" 135 | 0x01: 136 | en: "No" 137 | fr: "Non" 138 | 0x02: 139 | en: "Yes" 140 | fr: "Oui" 141 | BLUETOOTH_SCAN: 142 | bits: '4.5-4.6' 143 | values: 144 | 0x00: 145 | en: "None" 146 | fr: "Aucun" 147 | 0x01: 148 | en: "Scan" 149 | fr: "Analyse" 150 | 0x02: 151 | en: "Cancel scan" 152 | fr: "Annuler l'analyse" 153 | LIST_TYPE: 154 | bits: '4.4' 155 | values: 156 | 0x00: 157 | en: "List of phoens" 158 | fr: "Liste des téléphones" 159 | 0x01: 160 | en: "List of other devices" 161 | fr: "Liste des autres appareils" -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/1E0.yml: -------------------------------------------------------------------------------- 1 | id: 0x1E0 2 | name: 'RADIO_STATUS_CONFIG' 3 | alt_names: ['ETAT_RADIO_GEN_V'] 4 | length: 5 5 | comment: 6 | en: 'General radio configuration' 7 | fr: 'Configuration generale de la radio' 8 | type: 'can' 9 | periodicity: '500ms' 10 | senders: 11 | - 'RADIO' 12 | receivers: 13 | - 'EMF' 14 | 15 | signals: 16 | TRACK_INTRO_OPTION: 17 | bits: '1.7-1.6' 18 | values: 19 | 0x00: 20 | en: 'Not available' 21 | fr: 'Non-disponible' 22 | 0x01: 23 | en: 'Error?' 24 | fr: 'Erreur?' 25 | 0x02: 26 | en: 'Available' 27 | fr: 'Disponible' 28 | 29 | TRACK_INTRO_ENABLED: 30 | bits: '1.5' 31 | values: 32 | 0x00: 33 | en: 'Disabled' 34 | fr: 'Desactive' 35 | 0x01: 36 | en: 'Enabled' 37 | fr: 'Active' 38 | 39 | RANDOM_OPTION: 40 | bits: '1.4-1.3' 41 | values: 42 | 0x00: 43 | en: 'Not available' 44 | fr: 'Non-disponible' 45 | 0x01: 46 | en: 'Error?' 47 | fr: 'Erreur?' 48 | 0x02: 49 | en: 'Available' 50 | fr: 'Disponible' 51 | 52 | RANDOM_ENABLED: 53 | bits: '1.2' 54 | values: 55 | 0x00: 56 | en: 'Disabled' 57 | fr: 'Desactive' 58 | 0x01: 59 | en: 'Enabled' 60 | fr: 'Active' 61 | 62 | REPEAT_OPTION: 63 | bits: '1.1-1.0' 64 | values: 65 | 0x00: 66 | en: 'Not available' 67 | fr: 'Non-disponible' 68 | 0x01: 69 | en: 'Error?' 70 | fr: 'Erreur?' 71 | 0x02: 72 | en: 'Available' 73 | fr: 'Disponible' 74 | 75 | REPEAT_ENABLED: 76 | bits: '2.7' 77 | values: 78 | 0x00: 79 | en: 'Disabled' 80 | fr: 'Desactive' 81 | 0x01: 82 | en: 'Enabled' 83 | fr: 'Active' 84 | 85 | UNUSED_1: # I suspect there's 2 options here 86 | bits: '2.6-2.0' 87 | unused: true 88 | 89 | RDS_ALT_FREQ_OPTION: 90 | bits: '3.7-3.6' 91 | values: 92 | 0x00: 93 | en: 'Not available' 94 | fr: 'Non-disponible' 95 | 0x01: 96 | en: 'Error?' 97 | fr: 'Erreur?' 98 | 0x02: 99 | en: 'Available' 100 | fr: 'Disponible' 101 | 102 | RDS_ALT_FREQ_ENABLED: 103 | bits: '3.5' 104 | values: 105 | 0x00: 106 | en: 'Disabled' 107 | fr: 'Desactive' 108 | 0x01: 109 | en: 'Enabled' 110 | fr: 'Active' 111 | 112 | UNUSED_2: # I suspect there's an option here 113 | bits: '3.4-3.2' 114 | unsued: true 115 | 116 | REG_MODE_OPTION: 117 | bits: '3.1-3.0' 118 | values: 119 | 0x00: 120 | en: 'Not available' 121 | fr: 'Non-disponible' 122 | 0x01: 123 | en: 'Error?' 124 | fr: 'Erreur?' 125 | 0x02: 126 | en: 'Available' 127 | fr: 'Disponible' 128 | 129 | REG_MODE_ENABLED: 130 | bits: '4.7' 131 | values: 132 | 0x00: 133 | en: 'Disabled' 134 | fr: 'Desactive' 135 | 0x01: 136 | en: 'Enabled' 137 | fr: 'Active' 138 | 139 | 140 | VOLUME_AUTO_OPTION: 141 | bits: '4.6-4.5' 142 | values: 143 | 0x00: 144 | en: 'Not available' 145 | fr: 'Non-disponible' 146 | 0x01: 147 | en: 'Error?' 148 | fr: 'Erreur?' 149 | 0x02: 150 | en: 'Available' 151 | fr: 'Disponible' 152 | 153 | VOLUME_AUTO_ENABLED: 154 | bits: '4.4' 155 | values: 156 | 0x00: 157 | en: 'Disabled' 158 | fr: 'Desactive' 159 | 0x01: 160 | en: 'Enabled' 161 | fr: 'Active' 162 | 163 | UNUSED_3: # you know the drill by now 164 | bits: '4.3-4.0' 165 | unused: true 166 | 167 | RADIO_TEXT_OPTION: 168 | bits: '5.7-5.6' 169 | values: 170 | 0x00: 171 | en: 'Not available' 172 | fr: 'Non-disponible' 173 | 0x01: 174 | en: 'Error?' 175 | fr: 'Erreur?' 176 | 0x02: 177 | en: 'Available' 178 | fr: 'Disponible' 179 | 180 | RADIO_TEXT_ENABLED: 181 | bitS: '5.5' 182 | values: 183 | 0x00: 184 | en: 'Disabled' 185 | fr: 'Desactive' 186 | 0x01: 187 | en: 'Enabled' 188 | fr: 'Active' 189 | 190 | UNUSED_4: # ... 191 | bits: '5.4-5.0' 192 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/1E5.yml: -------------------------------------------------------------------------------- 1 | id: 0x1E5 2 | name: 'RADIO_STATUS_AUDIO' 3 | alt_names: ['ETAT_RADIO_GEN_AUD'] 4 | length: 7 5 | comment: 6 | en: 'Audio configuration' 7 | fr: 'Configuration audio' 8 | type: 'can' 9 | periodicity: '500ms' 10 | senders: 11 | - 'RADIO' 12 | receivers: 13 | - 'EMF' 14 | 15 | signals: 16 | LEFT_RIGHT_BALANCE_MENU: 17 | bits: '1.7' 18 | values: 19 | 0x00: 20 | en: 'No menu display' 21 | fr: 'Aucun affichage' 22 | 0x01: 23 | en: 'Display menu' 24 | fr: 'Affichage du menu' 25 | 26 | LEFT_RIGHT_BALANCE_VALUE: 27 | bits: '1.6-1.0' 28 | type: 'sint' 29 | min: -9 30 | max: 9 31 | offset: -63 32 | 33 | REAR_FRONT_BALANCE_MENU: 34 | bits: '2.7' 35 | values: 36 | 0x00: 37 | en: 'No menu display' 38 | fr: 'Aucun affichage' 39 | 0x01: 40 | en: 'Display menu' 41 | fr: 'Affichage du menu' 42 | 43 | # Fixed the same is in 128.yml at line 574 44 | # Renamed from LEFT_RIGHT_BALANCE_VALUE to LEFT_RIGHT_BALANCE_VALUE_DUPLICATE to fix duplicated mapping key error! 45 | LEFT_RIGHT_BALANCE_VALUE_DUPLICATE: 46 | bits: '2.6-2.0' 47 | type: 'sint' 48 | min: -9 49 | max: 9 50 | offset: -63 51 | 52 | BASS_MENU: 53 | bits: '3.7' 54 | values: 55 | 0x00: 56 | en: 'No menu display' 57 | fr: 'Aucun affichage' 58 | 0x01: 59 | en: 'Display menu' 60 | fr: 'Affichage du menu' 61 | 62 | BASS_VALUE: 63 | bits: '3.6-3.0' 64 | type: 'sint' 65 | min: -9 66 | max: 9 67 | offset: -63 68 | 69 | UNUSED_1: # I suspect there's a setting here 70 | bits: '4.7-4.0' 71 | 72 | TREBLE_MENU: 73 | bits: '5.7' 74 | values: 75 | 0x00: 76 | en: 'No menu display' 77 | fr: 'Aucun affichage' 78 | 0x01: 79 | en: 'Display menu' 80 | fr: 'Affichage du menu' 81 | 82 | TREBLE_VALUE: 83 | bits: '5.6-5.0' 84 | type: 'sint' 85 | min: -9 86 | max: 9 87 | offset: -63 88 | 89 | LOUDNESS_MENU: 90 | bits: '6.7' 91 | values: 92 | 0x00: 93 | en: 'No menu display' 94 | fr: 'Aucun affichage' 95 | 0x01: 96 | en: 'Display menu' 97 | fr: 'Affichage du menu' 98 | 99 | LOUDNESS_VALUE: 100 | bits: '6.6' 101 | values: 102 | 0x00: 103 | en: 'OFF' 104 | fr: 'OFF' 105 | 0x01: 106 | en: 'ON' 107 | fr: 'ON' 108 | 109 | UNUSED_2: 110 | bits: '6.5' 111 | 112 | AUTO_VOLUME_MENU: 113 | bits: '6.4' 114 | values: 115 | 0x00: 116 | en: 'No menu display' 117 | fr: 'Aucun affichage' 118 | 0x01: 119 | en: 'Display menu' 120 | fr: 'Affichage du menu' 121 | 122 | UNUSED_3: 123 | bits: '6.3' 124 | 125 | AUTO_VOLUME_VALUE: 126 | bits: '6.2-6.0' 127 | values: 128 | 0x00: 129 | en: 'OFF' 130 | fr: 'OFF' 131 | 0x07: 132 | en: 'ON' 133 | fr: 'ON' 134 | 135 | UNUSED_4: 136 | bits: '7.7' 137 | 138 | AMBIANCE_MENU: 139 | bits: '7.6' 140 | values: 141 | 0x00: 142 | en: 'No menu display' 143 | fr: 'Aucun affichage' 144 | 0x01: 145 | en: 'Display menu' 146 | fr: 'Affichage du menu' 147 | 148 | UNUSED_5: 149 | bits: '7.5' 150 | 151 | AMBIANCE_VALUE: 152 | bits: '7.4-7.2' 153 | values: 154 | 0x00: 155 | en: 'None' 156 | fr: 'Aucune' 157 | 0x01: 158 | en: 'Classical' 159 | fr: 'Classique' 160 | 0x02: 161 | en: 'Jazz-Blues' 162 | fr: 'Jazz-Blues' 163 | 0x03: 164 | en: 'Pop-Rock' 165 | fr: 'Pop-Rock' 166 | 0x04: 167 | en: 'Vocal' 168 | fr: 'Vocal' 169 | 0x05: 170 | en: 'Techno' 171 | fr: 'Techno' 172 | 173 | UNKNOWN_1: # Unknown, always 0x03 174 | bits: '7.1-7.0' 175 | unused: true 176 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/217.yml: -------------------------------------------------------------------------------- 1 | id: 0x217 2 | name: 'CMB_STATUS' 3 | length: 8 4 | type: 'can' 5 | periodicity: '100ms' 6 | senders: 7 | - 'CMB' 8 | receivers: 9 | - 'BSI' 10 | 11 | signals: 12 | LUMINOSITY: 13 | bits: '1.7-1.4' 14 | comment: 15 | en: 'luminosity level requested' 16 | fr: 'niveau de luminosite demande' 17 | type: 'uint' 18 | min: 0 19 | max: 15 20 | 21 | DARK_STATUS: 22 | bits: '1.3' 23 | type: 'uint' 24 | values: 25 | 0x00: 26 | en: 'dark mode not requested' 27 | fr: 'pas de demande mode dark' 28 | 0x01: 29 | en: 'dark mode requested' 30 | fr: 'demande mode dark' 31 | 32 | RESET_MAINTENANCE: 33 | bits: '1.2' 34 | type: 'uint' 35 | values: 36 | 0x00: 37 | en: 'maintenance reset not requested' 38 | fr: 'pas de demande remise a zero maintenance' 39 | 0x01: 40 | en: 'maintenance reset requested' 41 | fr: 'demande remise a zero maintenance' 42 | 43 | # TODO 44 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/21F.yml: -------------------------------------------------------------------------------- 1 | id: 0x0F6 2 | name: 'RADIO_COMMANDS' 3 | alt_names: ['CDE_RADIO'] 4 | length: 3 5 | comment: 6 | en: 'Contains wheel radio commands, proxied from the HDC on CAR bus' 7 | fr: 'Commandes au volant pour la radio, transmis depuis le HDC sur le bus CAR' 8 | type: 'can' 9 | periodicity: '100ms' 10 | senders: 11 | - 'BSI' # From HDC, proxied 12 | receivers: 13 | - 'RADIO' 14 | # Possibly other like telematics ECUs 15 | 16 | # Names are from a random chinese documentation for a radio 17 | # Both names were used, original one is unknown 18 | signals: 19 | UNUSED_1: 20 | bits: '1.0' 21 | unused: true 22 | 23 | SRC: 24 | bits: '1.1' 25 | alt_names: ['HDC_SOURCE', 'MODE_TELEPH_ET_HDC'] 26 | comment: 27 | en: 'Source (and possibly mode and phone?) button' 28 | fr: 'Commande source' 29 | values: 30 | 0x00: 31 | en: 'Button released' 32 | fr: 'Inactif' 33 | 0x01: 34 | en: 'Button pushed' 35 | fr: 'Actif' 36 | 37 | VOL_DOWN: 38 | bits: '1.2' 39 | alt_names: ['HDC_VOLUME_DOWN', 'VOLUME_DWN_ET_HDC'] 40 | comment: 41 | en: 'Volume down' 42 | fr: 'Volume moins' 43 | values: 44 | 0x00: 45 | en: 'Button released' 46 | fr: 'Inactif' 47 | 0x01: 48 | en: 'Button pushed' 49 | fr: 'Actif' 50 | 51 | VOL_UP: 52 | bits: '1.3' 53 | alt_names: ['HDC_VOLUME_UP', 'VOLUME_UP_ET_HDC'] 54 | comment: 55 | en: 'Volume up' 56 | fr: 'Volume plus' 57 | values: 58 | 0x00: 59 | en: 'Button released' 60 | fr: 'Inactif' 61 | 0x01: 62 | en: 'Button pushed' 63 | fr: 'Actif' 64 | 65 | OVERFLOW_SCROLL_DOWN: 66 | bits: '1.4' 67 | comment: 68 | en: 'Overflow while scrolling down' 69 | fr: 'Debordement roulette bas' 70 | values: 71 | 0x00: 72 | en: 'No overflow' 73 | fr: 'Pas de debordement' 74 | 0x01: 75 | en: 'Overflowing' 76 | fr: 'Debordement' 77 | 78 | OVERFLOW_SCROLL_UP: 79 | bits: '1.5' 80 | comment: 81 | en: 'Overflow while scrolling up' 82 | fr: 'Debordement roulette haut' 83 | values: 84 | 0x00: 85 | en: 'No overflow' 86 | fr: 'Pas de debordement' 87 | 0x01: 88 | en: 'Overflow' 89 | fr: 'Debordement' 90 | 91 | SEEK_DOWN: 92 | bits: '1.6' 93 | alt_names: ['HDC_PRECEDENT', 'SEEK_DWN_ET_HDC'] 94 | comment: 95 | en: 'Seek down' 96 | fr: 'Recherche descendante' 97 | values: 98 | 0x00: 99 | en: 'Button released' 100 | fr: 'Inactif' 101 | 0x01: 102 | en: 'Button pushed' 103 | fr: 'Actif' 104 | 105 | SEEK_UP: 106 | bits: '1.7' 107 | alt_names: ['HDC_SUIVANT', 'SEEK_UP_ET_HDC'] 108 | comment: 109 | en: 'Seek up' 110 | fr: 'Recherche montante' 111 | values: 112 | 0x00: 113 | en: 'Button released' 114 | fr: 'Inactif' 115 | 0x01: 116 | en: 'Button pushed' 117 | fr: 'Actif' 118 | 119 | SCROLL: 120 | bits: '2.7-2.0' 121 | alt_names: ['HDC_MOLETTE', 'CMPT_MOL_ET_HDC'] 122 | comment: 123 | en: 'Scroll wheel' 124 | fr: 'Roulette' 125 | type: 'sint' 126 | min: -128 127 | max: 128 128 | 129 | UNUSED_2: 130 | bits: '3.7-3.0' 131 | unused: true 132 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/220.yml: -------------------------------------------------------------------------------- 1 | id: 0x220 2 | name: 'DOORS_STATUS' 3 | length: 2 4 | type: 'can' 5 | periodicity: '500ms' 6 | senders: 7 | - 'BSI' 8 | receivers: 9 | [] # Unknown 10 | 11 | signals: 12 | FRONT_LEFT_DOOR: 13 | bits: '1.7' 14 | comment: 15 | en: 'Front left door status' 16 | fr: 'Etat porte avant gauche' 17 | values: 18 | 0x00: 19 | en: 'Closed' 20 | fr: 'Fermee' 21 | 0x01: 22 | en: 'Opened' 23 | fr: 'Ouverte' 24 | 25 | FRONT_RIGHT_DOOR: 26 | bits: '1.6' 27 | comment: 28 | en: 'Front right door status' 29 | fr: 'Etat porte avant droite' 30 | values: 31 | 0x00: 32 | en: 'Closed' 33 | fr: 'Fermee' 34 | 0x01: 35 | en: 'Opened' 36 | fr: 'Ouverte' 37 | 38 | REAR_LEFT_DOOR: 39 | bits: '1.5' 40 | comment: 41 | en: 'Rear left door status' 42 | fr: 'Etat porte arriere gauche' 43 | values: 44 | 0x00: 45 | en: 'Closed' 46 | fr: 'Fermee' 47 | 0x01: 48 | en: 'Opened' 49 | fr: 'Ouverte' 50 | 51 | REAR_RIGHT_DOOR: 52 | bits: '1.4' 53 | comment: 54 | en: 'Rear right door status' 55 | fr: 'Etat porte arriere droite' 56 | values: 57 | 0x00: 58 | en: 'Closed' 59 | fr: 'Fermee' 60 | 0x01: 61 | en: 'Opened' 62 | fr: 'Ouverte' 63 | 64 | TRUNK: 65 | bits: '1.3' 66 | comment: 67 | en: 'Trunk status' 68 | fr: 'Etat du coffre' 69 | values: 70 | 0x00: 71 | en: 'Closed' 72 | fr: 'Ferme' 73 | 0x01: 74 | en: 'Opened' 75 | fr: 'Ouvert' 76 | 77 | HOOD: 78 | bits: '1.2' 79 | comment: 80 | en: 'Hood status' 81 | fr: 'Etat capot' 82 | values: 83 | 0x00: 84 | en: 'Closed' 85 | fr: 'Ferme' 86 | 0x01: 87 | en: 'Opened' 88 | fr: 'Ouvert' 89 | 90 | REAR_WINDOW: # On SW models only 91 | bits: '1.1' 92 | comment: 93 | en: 'Rear window status' 94 | fr: 'Etat lunette arriere' 95 | values: 96 | 0x00: 97 | en: 'Closed' 98 | fr: 'Fermee' 99 | 0x01: 100 | en: 'Opened' 101 | fr: 'Ouverte' 102 | 103 | FUEL_CAP: 104 | bits: '1.0' 105 | comment: 106 | en: 'Fuel cap status' 107 | fr: 'Etat bouchon carburant' 108 | values: 109 | 0x00: 110 | en: 'Closed' 111 | fr: 'Ferme' 112 | 0x01: 113 | en: 'Opened' 114 | fr: 'Ouvert' 115 | 116 | CAR_TYPE: 117 | bits: '2.7' 118 | comment: 119 | en: 'Car type' 120 | fr: 'Type voiture' 121 | values: 122 | 0x00: 123 | en: '5 doors' 124 | fr: '5 portes' 125 | 0x01: 126 | en: '3 doors' 127 | fr: '3 portes' 128 | 129 | UNUSED_1: 130 | bits: '2.6-2.0' 131 | unused: true 132 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/221.yml: -------------------------------------------------------------------------------- 1 | id: 0x221 2 | name: 'TRIP_GENERAL_INFOS' 3 | alt_names: ['INFOS_GEN_ODB'] 4 | length: 7 5 | type: 'can' 6 | periodicity: '1000ms' 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | - 'EMF' 11 | - 'CMB' 12 | 13 | signals: 14 | CHECK_CONSUMPTION: 15 | bits: '1.7' 16 | alt_names: ['CONSO_ODB'] 17 | comment: 18 | en: 'Consumption data check' 19 | fr: 'Verification donnees consommation' 20 | values: 21 | 0x00: 22 | en: 'Valid data' 23 | fr: 'Donnees valides' 24 | 0x01: 25 | en: 'Invalid data' 26 | fr: 'Donnees invalides' 27 | 28 | CHECK_AUTONOMY: 29 | bits: '1.6' 30 | alt_names: ['AUTON_ODB'] 31 | comment: 32 | en: 'Autonomy data check' 33 | fr: 'Verifications donnees autonomie' 34 | values: 35 | 0x00: 36 | en: 'Valid data' 37 | fr: 'Donnees valides' 38 | 0x01: 39 | en: 'Invalid data' 40 | fr: 'Donnees invalides' 41 | 42 | UNUSED_1: 43 | bits: '1.5-1.4' 44 | unused: true 45 | 46 | TRIP_PUSH_BUTTON: 47 | bits: '1.3' 48 | alt_names: ['POUSSOIR_ODB'] 49 | comment: 50 | en: 'Trip (right) push button' 51 | fr: 'Bouton poussoir ODB (droit)' 52 | values: 53 | 0x00: 54 | en: 'Not pushed' 55 | fr: 'Non appuye' 56 | 0x01: 57 | en: 'Pushed' 58 | fr: 'Appuye' 59 | 60 | UNUSED_2: 61 | bits: '1.2-1.1' 62 | unused: true 63 | 64 | NAVIGATION_PUSH_BUTTON: 65 | bits: '1.0' 66 | alt_names: ['POUSSOIR_NAV'] 67 | comment: 68 | en: 'Navigation (left) push button' 69 | fr: 'Bouton poussoir navigation (gauche)' 70 | values: 71 | 0x00: 72 | en: 'Not pushed' 73 | fr: 'Non appuye' 74 | 0x01: 75 | en: 'Pushed' 76 | fr: 'Appuye' 77 | 78 | INSTANT_CONSUMPTION: 79 | bits: '2.7-3.0' 80 | alt_names: ['CONSO_INSTANTANEE'] 81 | comment: 82 | en: 'Instant consumption' 83 | fr: 'Consommation instantanee carburant' 84 | 85 | AUTONOMY: 86 | bits: '4.7-5.0' 87 | alt_names: ['AUTONOMIE'] 88 | comment: 89 | en: 'Autonomy with current fuel' 90 | fr: 'Autonomie avec le carburant actuel' 91 | 92 | TRIP_DIST_LEFT: 93 | bits: '6.7-7.0' 94 | alt_names: ['KM_RESTANT'] 95 | comment: 96 | en: 'Distance left on current trip' 97 | fr: 'Distance a parcourir trajet en cours' 98 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/225.yml: -------------------------------------------------------------------------------- 1 | id: 0x1A5 2 | name: 'RADIO_STATUS_TUNER' 3 | length: 5 4 | comment: 5 | en: 'Tuner status' 6 | fr: 'Etat du tuner' 7 | type: 'can' 8 | periodicity: '500ms' 9 | senders: 10 | - 'RADIO' 11 | receivers: 12 | - 'EMF' 13 | 14 | signals: 15 | DISPLAY_LIST: 16 | bits: '1.7' 17 | values: 18 | 0x00: 19 | en: 'No display' 20 | fr: 'Ne pas afficher' 21 | 0x01: 22 | en: 'Display' 23 | fr: 'Affiche' 24 | 25 | UNUSED_1: 26 | bits: '1.6' 27 | unused: true 28 | 29 | SEARCH_DIRECTION: 30 | bits: '1.5' 31 | values: 32 | 0x00: 33 | en: 'Down' 34 | fr: 'Decroissant' 35 | 0x01: 36 | en: 'Up' 37 | fr: 'Croissant' 38 | 39 | UNKNOWN_1: 40 | bits: '1.4' 41 | unused: true 42 | 43 | SEARCH_STATUS: 44 | bits: '1.3-1.0' 45 | values: 46 | 0x00: 47 | en: 'Not searching' 48 | fr: 'Aucune recherche' 49 | 0x01: 50 | en: 'Manual search' 51 | fr: 'Recherche manuelle' 52 | 0x02: 53 | en: 'Auto frequency search' 54 | fr: 'Recherche auto de frequence' 55 | 0x03: 56 | en: 'Auto program search' 57 | fr: 'Recherche auto programme' 58 | 0x04: 59 | en: 'Auto RDS search' 60 | fr: 'Recherche auto RDS' 61 | 0x05: 62 | en: 'Auto PTY search' 63 | fr: 'Recherche auto PTY' 64 | 0x06: 65 | en: 'Auto AF search' 66 | fr: 'Recherche auto AF' 67 | 0x07: 68 | en: 'Auto signal search' 69 | fr: 'Recherche auto signal' 70 | 0x08: 71 | en: 'From favories' 72 | fr: 'Depuis les favoris' 73 | 0xFF: 74 | en: 'Error' 75 | fr: 'Erreur' 76 | 77 | 78 | CURRENT_MEMORY: 79 | bits: '2.7-2.4' 80 | type: 'uint' 81 | min: 1 82 | max: 6 83 | values: 84 | 0x00: 85 | en: 'Not in memory' 86 | fr: 'Pas en memoire' 87 | 0x07: 88 | en: 'Error' 89 | fr: 'Erreur' 90 | 91 | UNUSED_2: 92 | bits: '2.3-2.0' 93 | unused: true 94 | 95 | PTY_AVAILABLE: 96 | bits: '3.7' 97 | values: 98 | 0x00: 99 | en: 'Not available' 100 | fr: 'Not available' 101 | 0x01: 102 | en: 'Available' 103 | fr: 'Disponible' 104 | 105 | BAND: 106 | bits: '3.6-3.4' 107 | values: 108 | 0x00: 109 | en: 'None' 110 | fr: 'Aucun' 111 | 0x01: 112 | en: 'FM1' 113 | fr: 'FM1' 114 | 0x02: 115 | en: 'FM2' 116 | fr: 'FM2' 117 | # 0x03 is not used? 118 | 0x04: 119 | en: 'FMAST' 120 | fr: 'FMAST' 121 | 0x05: 122 | en: 'AM' 123 | fr: 'AM' 124 | 125 | UNUSED_3: 126 | bits: '3.3-3.0' 127 | unused: true 128 | 129 | UNUSED_4: 130 | bits: '4.7-4.3' 131 | unused: true 132 | 133 | FREQUENCY: 134 | bits: '4.2-5.0' 135 | min: 0 136 | max: 2046 137 | offset: 50 138 | factor: 0.05 139 | units: 'khz/mhz' 140 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/257.yml: -------------------------------------------------------------------------------- 1 | id: 0x257 2 | name: 'CMB_ODOMETER' 3 | length: 6 4 | comment: 5 | en: 'Odometer data from CMB' 6 | fr: 'Totaliseur kilometrique du CMB' 7 | type: 'can' 8 | periodicity: 'trigger' 9 | senders: 10 | - 'CMB' 11 | receivers: 12 | - 'BSI' 13 | 14 | signals: 15 | CMB_ODOMETER: 16 | bits: '1.7-3.0' 17 | comment: 18 | en: 'Odometer value' 19 | fr: 'Totaliseur kilometrique' 20 | type: 'float' 21 | factor: 0.1 22 | min: 0 23 | max: 1677721.4 24 | units: 'km' 25 | values: 26 | 0xFFFFFF: 27 | en: 'error' 28 | fr: 'erreur' 29 | 30 | UNUSED_1: 31 | bits: '4.7-6.0' 32 | unused: true 33 | 34 | 35 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/261.yml: -------------------------------------------------------------------------------- 1 | id: 0x2A1 2 | name: 'TRIP_SECOND_INFOS' 3 | alt_names: ['INFOS_TRAJET1_ODB'] 4 | length: 7 5 | type: 'can' 6 | periodicity: '1000ms' 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | - 'EMF' 11 | - 'CMB' 12 | 13 | signals: 14 | MEAN_SPEED: 15 | bits: '1.7-1.0' 16 | alt_names: ['VITESSE_MOYENNE_T2'] 17 | comment: 18 | en: 'Mean speed' 19 | fr: 'Vitesse moyenne' 20 | 21 | TOTAL_DISTANCE: 22 | bits: '2.7-3.0' 23 | alt_names: ['DISTANCE_TRAJET2'] 24 | comment: 25 | en: 'Total distance' 26 | fr: 'Distance totale' 27 | 28 | MEAN_CONSUMPTION: 29 | bits: '4.7-5.0' 30 | alt_names: ['CONSO_TRAJET2'] 31 | comment: 32 | en: 'Mean consumption' 33 | fr: 'Consommation moyenne carburant' 34 | 35 | TOTAL_TIME: 36 | bits: '6.7-7.0' 37 | alt_names: ['DUREE_TRAJET2'] 38 | comment: 39 | en: 'Total time' 40 | fr: 'Duree totale' 41 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/2A1.yml: -------------------------------------------------------------------------------- 1 | id: 0x2A1 2 | name: 'TRIP_FIRST_INFOS' 3 | alt_names: ['INFOS_TRAJET1_ODB'] 4 | length: 7 5 | type: 'can' 6 | periodicity: '1000ms' 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | - 'EMF' 11 | - 'CMB' 12 | 13 | signals: 14 | MEAN_SPEED: 15 | bits: '1.7-1.0' 16 | alt_names: ['VITESSE_MOYENNE_T1'] 17 | comment: 18 | en: 'Mean speed' 19 | fr: 'Vitesse moyenne' 20 | 21 | TOTAL_DISTANCE: 22 | bits: '2.7-3.0' 23 | alt_names: ['DISTANCE_TRAJET1'] 24 | comment: 25 | en: 'Total distance' 26 | fr: 'Distance totale' 27 | 28 | MEAN_CONSUMPTION: 29 | bits: '4.7-5.0' 30 | alt_names: ['CONSO_TRAJET1'] 31 | comment: 32 | en: 'Mean consumption' 33 | fr: 'Consommation moyenne carburant' 34 | 35 | TOTAL_TIME: 36 | bits: '6.7-7.0' 37 | alt_names: ['DUREE_TRAJET1'] 38 | comment: 39 | en: 'Total time' 40 | fr: 'Duree totale' 41 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/2A5.yml: -------------------------------------------------------------------------------- 1 | id: 0x2A5 2 | name: 'RADIO_STATUS_STATION' 3 | length: 1 4 | comment: 5 | en: 'Radio station name' 6 | fr: 'Nom de la station radio' 7 | type: 'can' 8 | periodicity: '500ms' 9 | senders: 10 | - 'RADIO' 11 | receivers: 12 | - 'EMF' 13 | 14 | signals: 15 | NAME: 16 | bits: '1.7-8.0' 17 | type: 'str' 18 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/2B6.yml: -------------------------------------------------------------------------------- 1 | id: 0x2B6 2 | name: 'VIN_VIS' 3 | alt_names: ['VIN_VIS'] 4 | length: 8 5 | comment: 6 | en: 'Vehicle Identifier Section part of the VIN (last 8 characters)' 7 | fr: 'Partie VIS (identification du vehicule) du VIN (les derniers 8 characters)' 8 | type: 'can' 9 | periodicity: '1000ms' 10 | senders: 11 | - 'BSI' 12 | receivers: 13 | - 'RADIO' # To check against internal memory, as an anti-theft security 14 | 15 | signals: 16 | VIN_3: 17 | bits: '1.0-8.7' 18 | type: 'str' 19 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/325.yml: -------------------------------------------------------------------------------- 1 | id: 0x325 2 | name: 'RADIO_STATUS_CD_GEN' 3 | alt_names: ['ETAT_RADIO_CD_CD'] 4 | length: 3 5 | comment: 6 | en: 'General CD player (internal) informations' 7 | fr: 'Informations generales du lecteur de CD interne' 8 | type: 'can' 9 | periodicity: '500ms' 10 | senders: 11 | - 'RADIO' 12 | receivers: 13 | - 'EMF' 14 | 15 | signals: 16 | UNUSED_1: 17 | bits: '1.7-1.4' 18 | unused: true 19 | 20 | REPEAT: 21 | bits: '1.3-1.2' 22 | values: 23 | 0x00: 24 | en: 'No repeat' 25 | fr: 'Pas de repetition' 26 | 0x01: 27 | en: 'Track repeat' 28 | fr: 'Repetition morceau' 29 | 0x02: 30 | en: 'Disk repeat' 31 | fr: 'Repetition disque' 32 | 33 | UNUSED_2: 34 | bits: '1.1' 35 | unused: true 36 | 37 | RANDOM: 38 | bits: '1.0' 39 | values: 40 | 0x00: 41 | en: 'No random' 42 | fr: 'Lecture non aleatoire' 43 | 0x01: 44 | en: 'Random' 45 | fr: 'Lecture aleatoire' 46 | 47 | UNUSED_3: 48 | bits: '2.7-2.6' 49 | unused: true 50 | 51 | DISK_ERROR: 52 | bits: '2.5-2.4' 53 | value: 54 | 0x00: 55 | en: 'No error' 56 | fr: 'Error' 57 | 0x01: 58 | en: 'Disk read error' 59 | fr: 'Erreur de lecture disque' 60 | 0x02: 61 | en: 'Disk upside down' 62 | fr: 'Disque dans le mauvais sens' 63 | 64 | TEXT_AVAILABLE: 65 | bits: '2.3' 66 | values: 67 | 0x00: 68 | en: 'Text not available' 69 | fr: 'Texte non disponible' 70 | 0x01: 71 | en: 'Text available' 72 | fr: 'Texte disponible' 73 | 74 | STATUS: 75 | bits: '2.2-2.0' 76 | values: 77 | 0x00: 78 | en: 'No disk' 79 | fr: 'Pas de disque' 80 | 0x01: 81 | en: 'Stopped' 82 | fr: 'Arrete' 83 | 0x02: 84 | en: 'Pause' 85 | fr: 'Pause' 86 | 0x03: 87 | en: 'Play' 88 | fr: 'Lecture' 89 | 0x04: 90 | en: 'Fast-forward' 91 | fr: 'Avance rapide' 92 | 0x05: 93 | en: 'Fast-backward' 94 | fr: 'Retour rapide' 95 | 0x06: 96 | en: 'Intro' 97 | fr: 'Intro' 98 | 99 | UNUSED_4: 100 | bits: '3.7-3.0' 101 | unused: true 102 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/336.yml: -------------------------------------------------------------------------------- 1 | id: 0x336 2 | name: 'VIN_WMI' 3 | length: 3 4 | comment: 5 | en: 'World Manufacturer Identifier part of the VIN (first 3 characters)' 6 | fr: 'Champ WMI (identifcation du constructeur) du VIN (premiers 3 characters)' 7 | type: 'can' 8 | periodicity: '1000ms' 9 | senders: 10 | - 'BSI' 11 | receivers: 12 | - 'RADIO' # To check against internal memory, as an anti-theft security 13 | 14 | signals: 15 | VIN_1: 16 | bits: '1.7-3.0' 17 | type: 'str' 18 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/365.yml: -------------------------------------------------------------------------------- 1 | id: 0x365 2 | name: 'RADIO_STATUS_CD_DISK' 3 | alt_names: ['ETAT_RADIO_CD_DSK'] 4 | length: 5 5 | comment: 6 | en: 'Internal CD disk status' 7 | fr: 'Etat du disque dans le lecteur CD interne' 8 | type: 'can' 9 | periodicity: '500ms' 10 | senders: 11 | - 'RADIO' 12 | receivers: 13 | - 'EMF' 14 | 15 | signals: 16 | TRACKS: 17 | bits: '1.7-1.0' 18 | comment: 19 | en: 'Number of tracks on the disk' 20 | fr: 'Nombre de pistes sur le CD' 21 | type: 'uint' 22 | min: 0 23 | max: 254 24 | values: 25 | 0xFF: 26 | en: 'No disk' 27 | fr: 'Pas de disque' 28 | 29 | TOTAL_DURATION_MINUTES: 30 | bits: '2.7-2.0' 31 | comment: 32 | en: 'Total disk duration, minutes' 33 | fr: 'Duree totale du disque, minutes' 34 | type: 'uint' 35 | units: 'mn' 36 | min: 0 37 | max: 254 38 | values: 39 | 0xFF: 40 | en: 'No disk' 41 | fr: 'Pas de disque' 42 | 43 | TOTAL_DURATION_SECONDS: 44 | bits: '3.7-3.0' 45 | comment: 46 | en: 'Total disk duration, seconds' 47 | fr: 'Duree totale du disque, secondes' 48 | type: 'uint' 49 | units: 's' 50 | min: 0 51 | max: 254 52 | values: 53 | 0xFF: 54 | en: 'No disk' 55 | fr: 'Pas de disque' 56 | 57 | UNUSED_1: 58 | bits: '4.7-4.1' 59 | unused: true 60 | 61 | TYPE: 62 | bits: '4.0' 63 | values: 64 | 0x00: 65 | en: 'Audio CD' 66 | fr: 'CD Audio' 67 | 0x01: 68 | en: 'MP3 CD' 69 | fr: 'CD MP3' 70 | 71 | UNUSED_2: 72 | bits: '5.7-5.0' 73 | unused: true 74 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/3A5.yml: -------------------------------------------------------------------------------- 1 | id: 0x3A5 2 | name: 'RADIO_STATUS_CD_TRACK' 3 | alt_names: ['ETAT_RADIO_CD_TRK'] 4 | length: 6 5 | comment: 6 | en: 'Internal CD track infos' 7 | fr: 'Informations de la piste CD en cours' 8 | type: 'can' 9 | periodicity: '500ms' 10 | senders: 11 | - 'RADIO' 12 | receivers: 13 | - 'EMF' 14 | 15 | signals: 16 | TRACK_NUMBER: 17 | bits: '1.7-1.0' 18 | type: 'uint' 19 | min: 1 20 | max: 254 21 | values: 22 | 0x00: 23 | en: 'No track' 24 | fr: 'Pas de piste' 25 | 26 | DURATION_MINUTES: 27 | bits: '2.7-2.0' 28 | type: 'uint' 29 | min: 0 30 | max: 254 31 | units: 'mn' 32 | 33 | DURATION_SECONDS: 34 | bits: '3.7-3.0' 35 | type: 'uint' 36 | min: 0 37 | max: 254 38 | units: 's' 39 | 40 | ELAPSED_MINUTES: 41 | bits: '4.7-4.0' 42 | type: 'uint' 43 | min: 0 44 | max: 254 45 | units: 'mn' 46 | 47 | ELAPSED_SECONDS: 48 | bits: '5.6-5.0' 49 | type: 'uint' 50 | min: 0 51 | max: 254 52 | units: 's' 53 | 54 | UNUSED_1: 55 | bits: '6.7-6.0' 56 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/3A7.yml: -------------------------------------------------------------------------------- 1 | id: 0x3A7 2 | name: 'MAINTENANCE_STATUS' 3 | alt_names: ['INFOS_MAINTENANCE'] 4 | length: 8 5 | type: 'can' 6 | periodicity: 500ms 7 | senders: 8 | - 'BSI' 9 | receivers: 10 | - 'CMB' 11 | 12 | signals: 13 | MAINTENANCE_TYPE: 14 | bits: '1.7' 15 | comment: 16 | en: 'Maintenance type' 17 | fr: 'Type maintenance' 18 | values: 19 | 0x00: 20 | en: 'Distance based' 21 | fr: 'Sur la distance' 22 | 0x01: 23 | en: 'Time based' 24 | fr: 'Sur le temps' 25 | 26 | ICON_STATUS: 27 | bits: '1.5-1.4' 28 | comment: 29 | en: 'Wrench icon status' 30 | fr: 'Etat icone maintenance' 31 | values: 32 | 0x00: 33 | en: 'Off' 34 | fr: 'Off' 35 | 0x01: 36 | en: 'On' 37 | fr: 'On' 38 | 0x02: 39 | en: 'Blinking' 40 | fr: 'Blinking' 41 | 42 | UNUSED_1: 43 | bits: '1.3-1.2' 44 | unused: true 45 | 46 | DISTANCE_SYMBOL: 47 | bits: '2.7' 48 | comment: 49 | en: 'Symbol before the maintenance distance' 50 | fr: 'Symbole a afficher avant la distance' 51 | values: 52 | 0x00: 53 | en: '+' 54 | fr: '+' 55 | 0x01: 56 | en: '-' 57 | fr: '-' 58 | 59 | DISTANCE_BLINKING: 60 | bits: '2.5' 61 | comment: 62 | en: 'Blinking maintenance distance' 63 | fr: 'Clignotement de la distance' 64 | values: 65 | 0x00: 66 | en: 'No blinking' 67 | fr: 'Pas de clignotement' 68 | 0x01: 69 | en: 'Blinking' 70 | fr: 'Clignotement' 71 | 72 | TIME_SYMBOL: 73 | bits: '3.7' 74 | comment: 75 | en: 'Symbol before the maintenance time' 76 | fr: 'Symbole a afficher avant le temps' 77 | values: 78 | 0x00: 79 | en: '+' 80 | fr: '+' 81 | 0x01: 82 | en: '-' 83 | fr: '-' 84 | 85 | TIME_BLINKING: 86 | bits: '3.5' 87 | comment: 88 | en: 'Blinking maintenance time' 89 | fr: 'Clignotement du temps' 90 | values: 91 | 0x00: 92 | en: 'No blinking' 93 | fr: 'Pas de clignotement' 94 | 0x01: 95 | en: 'Blinking' 96 | fr: 'Clignotement' 97 | 98 | DISTANCE: 99 | bits: '4.7-5.0' 100 | comment: 101 | en: 'Distance' 102 | fr: 'Distance' 103 | 104 | TIME: 105 | bits: '6.7-7.0' 106 | comment: 107 | en: 'Time (real)' 108 | fr: 'Duree (reele)' 109 | 110 | DISPLAY_TIME: 111 | bits: '8.7-8.0' 112 | comment: 113 | en: 'Time (displayed)' 114 | fr: 'Duree (reele)' 115 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/3B6.yml: -------------------------------------------------------------------------------- 1 | id: 0x3B6 2 | name: 'VIN_VDS' 3 | length: 6 4 | comment: 5 | en: 'Vehicle Descriptor Section part of the VIN (middle 6 characters)' 6 | fr: 'Champ VDS (description du vehicule) du VIN (6 characters du milieu)' 7 | type: 'can' 8 | periodicity: '1000ms' 9 | senders: 10 | - 'BSI' 11 | receivers: 12 | - 'RADIO' # To check against internal memory, as an anti-theft security 13 | 14 | signals: 15 | VIN_2: 16 | bits: '1.7-6.0' 17 | type: 'str' 18 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/3E5.yml: -------------------------------------------------------------------------------- 1 | id: 0x3A5 2 | name: 'RADIO_STATUS_PANEL' 3 | alt_names: ['ETAT_CDT'] 4 | length: 6 5 | comment: 6 | en: 'Radio front panel status' 7 | fr: 'Etat du panneau de commande de la radio' 8 | type: 'can' 9 | periodicity: '500ms' 10 | senders: 11 | - 'RADIO' 12 | receivers: 13 | - 'EMF' 14 | 15 | signals: 16 | UNUSED_1: 17 | bits: '1.7' 18 | unused: true 19 | 20 | MENU: 21 | bits: '1.6' 22 | 23 | UNUSED_2: 24 | bits: '1.5' 25 | unused: true 26 | 27 | PHONE: 28 | bits: '1.4' 29 | 30 | UNUSED_3: 31 | bits: '1.3' 32 | unused: true 33 | 34 | NAV: 35 | bits: '1.2' 36 | 37 | UNUSED_4: 38 | bits: '1.1' 39 | unused: true 40 | 41 | CLIM: 42 | bits: '1.0' 43 | 44 | UNUSED_5: 45 | bits: '2.7' 46 | unused: true 47 | 48 | TRIP: 49 | bits: '2.6' 50 | UNUSED_6: 51 | bits: '2.5' 52 | unused: true 53 | 54 | MODE: 55 | bits: '2.4' 56 | 57 | UNUSED_7: 58 | bits: '2.3' 59 | unused: true 60 | 61 | UNUSED_8: # I suspect there's something here 62 | bits: '2.2' 63 | unused: true 64 | 65 | UNUSED_9: 66 | bits: '2.1' 67 | unused: true 68 | 69 | AUDIO: 70 | bits: '2.0' 71 | 72 | UNUSED_10: 73 | bits: '3.7' 74 | unused: true 75 | 76 | OK: 77 | bits: '3.6' 78 | 79 | UNUSED_11: 80 | bits: '3.5' 81 | unused: true 82 | 83 | ESC: 84 | bits: '3.4' 85 | 86 | UNUSED_12: 87 | bits: '3.3' 88 | unused: true 89 | 90 | DARK: 91 | bits: '3.2' 92 | 93 | UNUSED_13: 94 | bits: '3.1' 95 | unused: true 96 | 97 | UNUSED_14: # I suspect there's something here as well 98 | bits: '3.0' 99 | unused: true 100 | 101 | UNUSED_15: 102 | bits: '4.7' 103 | unused: true 104 | 105 | SCROLL_OVERFLOW_UP: 106 | bits: '4.6' 107 | 108 | UNUSED_16: 109 | bits: '4.5' 110 | unused: true 111 | 112 | SCROLL_OVERFLOW_DOWN: 113 | bits: '4.4' 114 | 115 | UNUSED_17: 116 | bits: '4.3-4.0' 117 | unused: true 118 | 119 | SCROLL: 120 | bits: '5.7-5.0' 121 | type: 'sint' 122 | min: -128 123 | max: 128 124 | 125 | # Sixth byte is for the d-pad 126 | UNUSED_18: 127 | bits: '6.7' 128 | unused: true 129 | 130 | UP: 131 | bits: '6.6' 132 | 133 | UNUSED_19: 134 | bits: '6.5' 135 | unused: true 136 | 137 | DOWN: 138 | bits: '6.4' 139 | 140 | UNUSED_20: 141 | bits: '6.3' 142 | unused: true 143 | 144 | RIGHT: 145 | bits: '6.3' 146 | 147 | UNUSED_21: 148 | bits: '6.1' 149 | unused: true 150 | 151 | LEFT: 152 | bits: '6.0' 153 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/3F6.yml: -------------------------------------------------------------------------------- 1 | id: 0x3F6 2 | name: 'CONFIG_DISPLAY' 3 | alt_names: ['DATE_CONFIG'] 4 | length: 7 5 | type: 'can' 6 | periodicity: '1000ms' 7 | senders: 8 | - 'EMF' 9 | receivers: 10 | [] # Unknown 11 | 12 | signals: 13 | TIMESTAMP_SECS: 14 | bits: '1.7-3.5' 15 | comment: 16 | en: 'Seconds' 17 | fr: 'Seconds' 18 | 19 | TIMESTAMP_DAYS: 20 | bits: '3.3-4.5' 21 | comment: 22 | en: 'Days' 23 | fr: 'Jours' 24 | 25 | TIMESTAMP_YEARS: 26 | bits: '5.7-5.0' 27 | comment: 28 | en: 'Years' 29 | fr: 'Annees' 30 | 31 | CONFIG_DISPLAY_TIME: 32 | bits: '6.7' 33 | comment: 34 | en: 'Time display mode' 35 | fr: 'Mode affichage horaire' 36 | values: 37 | 0x00: 38 | en: '12h' 39 | fr: '12h' 40 | 0x01: 41 | en: '24h' 42 | fr: '24h' 43 | 44 | CONFIG_DISPLAY_MODE: 45 | bits: '6.6' 46 | comment: 47 | en: 'Display mode' 48 | fr: 'Mode affichage' 49 | values: 50 | 0x00: 51 | en: 'Negative' 52 | fr: 'Negatif' 53 | 0x01: 54 | en: 'Positive' 55 | fr: 'Positif' 56 | 57 | CONFIG_TEMP_UNIT: 58 | bits: '6.5' 59 | comment: 60 | en: 'Temperature unit' 61 | fr: 'Unite temperature' 62 | values: 63 | 0x00: 64 | en: 'Celsius' 65 | fr: 'Celsius' 66 | 0x01: 67 | en: 'Fahrenheit' 68 | fr: 'Fahrenheit' 69 | 70 | UNUSED_1: 71 | bits: '6.4' 72 | unused: true 73 | 74 | CONFIG_PRESSURE_UNIT: 75 | bits: '6.3' 76 | comment: 77 | en: 'Pressure unit' 78 | fr: 'Unite pression' 79 | values: 80 | 0x00: 81 | en: 'Bar' 82 | fr: 'Bar' 83 | 0x01: 84 | en: 'PSI' 85 | fr: 'PSI' 86 | 87 | CONFIG_CONSUMPTION_UNIT: 88 | bits: '6.2' 89 | comment: 90 | en: 'Consuption unit type' 91 | fr: 'Type unite consommation' 92 | values: 93 | 0x00: # Eg. liters/kilometers 94 | en: 'Volume per distance' 95 | fr: 'Volume pour une distance' 96 | 0x01: # Eg. miles/gallon 97 | en: 'Distance per volume' 98 | fr: 'Distance pour un volume' 99 | 100 | CONFIG_VOLUME_UNIT: 101 | bits: '6.1' 102 | comment: 103 | en: 'Volume unit' 104 | fr: 'Unite volume' 105 | values: 106 | 0x00: 107 | en: 'Liter' 108 | fr: 'Litre' 109 | 0x01: 110 | en: 'Gallon' 111 | fr: 'Gallon' 112 | 113 | CONFIG_DISTANCE_UNIT: 114 | bits: '6.0' 115 | comment: 116 | en: 'Distance unit' 117 | fr: 'Unite distance' 118 | values: 119 | 0x00: 120 | en: 'Kilometer' 121 | fr: 'Kilometre' 122 | 0x01: 123 | en: 'Mile' 124 | fr: 'Mile' 125 | 126 | CONFIG_LANGUAGE: 127 | bits: '7.3-7.0' 128 | comment: 129 | en: 'Language' 130 | fr: 'Langue' 131 | values: 132 | 0x00: 133 | en: 'French' 134 | fr: 'Francais' 135 | 0x01: 136 | en: 'English' 137 | fr: 'Anglais' 138 | 0x02: 139 | en: 'German' 140 | fr: 'Allemand' 141 | 0x03: 142 | en: 'Spanish' 143 | fr: 'Espagnol' 144 | 0x04: 145 | en: 'Italian' 146 | fr: 'Italien' 147 | 0x05: 148 | en: 'Portugese' 149 | fr: 'Portugais' 150 | 0x06: 151 | en: 'Dutch' 152 | fr: 'Neerlandais' 153 | 0x07: 154 | en: 'Greek' 155 | fr: 'Grec' 156 | 0x08: 157 | en: 'Brasilian' 158 | fr: 'Bresilien' 159 | 0x09: 160 | en: 'Polish' 161 | fr: 'Polonais' 162 | 0x0A: 163 | en: 'Traditional Chinese' 164 | fr: 'Chinois traditionnel' 165 | 0x0B: 166 | en: 'Simplified Chinese' 167 | fr: 'Chinois simplifie' 168 | 0x0C: 169 | en: 'Turkish' 170 | fr: 'Turc' 171 | 0x0E: 172 | en: 'Russian' 173 | fr: 'Russe' 174 | # What is 0x0B? 175 | -------------------------------------------------------------------------------- /buses/AEE2004.full/LS.CONF/README.md: -------------------------------------------------------------------------------- 1 | # AEE2004 Low Speed (CONF+CAR) buses 2 | 3 | ## Common frames 4 | 5 | | ID range | Description | 6 | |----------------|---------------------| 7 | | 0x480 -> 0x4BF | Error event frames | 8 | | 0x400 -> 0x43F | Wakeup event frames | 9 | | 0x500 -> 0x53F | Supervision frames | 10 | | 0x5C0 -> 0x5EF | Version frames | 11 | -------------------------------------------------------------------------------- /cars/A0.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A08VAN: 'peugeot 1007 (VAN)' 3 | A08CAN: 'peugeot 1007 (CAN)' 4 | 5 | versions: 6 | VAN: 7 | architecture: 'AEE2001.full' 8 | # TODO 9 | CAN: 10 | architecture: 'AEE2004.full' 11 | # TODO 12 | -------------------------------------------------------------------------------- /cars/A3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A31: 'citroen C3 ph2' # C3 restyled + switch to AEE2004 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/A4.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A42: 'citroen C3 Pluriel' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/A5.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A51: 'citroen C3 II' 3 | Ai51: 'citroen C3 II (Iran)' # Not sure about iran, but the "i" often means that 4 | A55: 'citroen DS 3' 5 | A58: 'citroen C3 Picasso' 6 | Ai58: ['citroen C3 Picasso (Iran)','citroen C3 Aircross (Iran)'] # citroen C3 Picasso (Iran): Same as Ai51 7 | # citroen C3 Aircross (Iran): PSA still recyling old models with new body for emerging markets 8 | 9 | 10 | versions: 11 | all: 12 | architecture: 'AEE2004.full' 13 | # TODO 14 | -------------------------------------------------------------------------------- /cars/A5P.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A55P: 'citroen DS 3 (updated AEE2010)' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/A6.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A6: 'citroen C2' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/A7.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A70: ['peugeot 207', 'peugeot 207+'] # 3 door version 3 | A71: 'peugeot 207' # 5 door version 4 | A72: 'peugeot 207 SW' # Break/SW version 5 | A73: 'peugeot 207 berline' # Sedan version 6 | A76: 'peugeot 207 CC' # Coupe/Cabriolet version 7 | 8 | versions: 9 | all: 10 | architecture: 'AEE2004.full' 11 | nodes: 12 | HS: # IS bus 13 | - 'BSI' 14 | - 'CMM' 15 | - 'ABS' 16 | - 'DAE' 17 | - 'BCP' 18 | - 'DSG' 19 | - 'CAV' 20 | LS: # CAR and CONF buses 21 | - 'BSI' 22 | - 'CDPL' 23 | - 'AAS' 24 | - 'RBG' 25 | - 'BSR' 26 | - 'BSM' 27 | - 'HDC' 28 | - 'MAE' 29 | - 'ALARM' 30 | - 'CMB' 31 | - 'RAD' 32 | - 'EMF' 33 | - 'CDC' 34 | - 'RT3' 35 | - 'CLIM' 36 | - 'BTE' 37 | LIN: 38 | - 'ADDGO' 39 | - 'TNB' 40 | -------------------------------------------------------------------------------- /cars/A8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A8: 'citroen C3' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/A88.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | # Not to be mistaken with A8 C3 which is VAN+CAN arch 3 | A88: 'citroen C3 Aircross' 4 | A88C: 'citroen C4 Aircross (China)' 5 | 6 | versions: 7 | all: 8 | architecture: 'AEE2010.full' 9 | # TODO 10 | -------------------------------------------------------------------------------- /cars/A9.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | A90: 'peugeot 208' # 3 door version 3 | A91: 'peugeot 208' # 5 door version 4 | Ai91: 'peugeot 208' # E-208? 5 | A94: 'peugeot 2008' 6 | Ai94: 'peugeot 2008' # Electric version? 7 | 8 | versions: 9 | all: 10 | architecture: 'AEE2010.full' 11 | # TODO 12 | -------------------------------------------------------------------------------- /cars/B0.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B0: ['citroen C1', 'peugeot 107', 'toyota Aygo'] 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/B3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B30: ['peugeot 108', 'peugeot 108'] # 3 door version / 5 door version 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/B4.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B4: 'citroen C1' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/B5.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B50: 'citroen C4' # 3 doors version 3 | B51: ['citroen C4', 'citroen C-Quatre ph2 (China)'] # citroen C4: 5 doors version 4 | B53: 'citroen C4 Sedan (Mercosur)' 5 | B54: 'citroen C-Triomphe (China)' 6 | B58: 'citroen C4 Picasso' 7 | 8 | versions: 9 | all: 10 | architecture: 'AEE2004.full' 11 | # TODO 12 | -------------------------------------------------------------------------------- /cars/B618.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B618: 'citroen C3 III' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/B7.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B71: 'citroen C4 II' 3 | B73: 'citroen C4 L' # China, Russia and Mercosur only, also called C4 Sedan and C4 Lounge 4 | B75: 'citroen DS 4' 5 | B78: 'citroen C4 SpaceTourer' 6 | B753: 'ds DS 5LS' # China only 7 | B754: 'ds DS 6' # China only 8 | 9 | versions: 10 | all: 11 | architecture: 'AEE2010.full' 12 | # TODO 13 | -------------------------------------------------------------------------------- /cars/B8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B81: ['citroen DS 5','ds DS 5'] 3 | B81HY: ['citroen DS 5 Hybrid4', 'ds DS 5 Hybrid4'] 4 | 5 | versions: 6 | all: 7 | architecture: 'AEE2010.full' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/B9.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B9: ['citroen Berlingo III', 'peugeot Partner III', 'open Combo Life'] 3 | B9E: ['citroen Berlingo III Electric', 'peugeot Partner III Electric'] 4 | 5 | versions: 6 | all: 7 | architecture: 'AEE2004.full' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/BX3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | BX3: 'citroen C-Quatre (China)' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/BZ3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | BZ3: 'citroen C4 (China)' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/C4.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | C4: 'peugeot 309' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/C41.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | C41: 'citroen C4 III' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/C5.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | C58: 'citroen C4 Picasso ph2' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/C84.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | C84: 'citroen C5 Aircross' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/CC21.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | CC21: 'citroen C3 IIII (India/Mercosur)' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/CS15.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | CS15: 'citroen Aircross (Concept car)' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/CX.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | CX: 'citroen CX' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/D2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | D22: 'peugeot 407 break' 3 | D23: 'peugeot 407 berline' 4 | D25: 'peugeot 407 coupe' 5 | 6 | versions: 7 | all: 8 | architecture: 'AEE2004.full' 9 | # TODO 10 | -------------------------------------------------------------------------------- /cars/D41.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | D41: 'ds DS 4 II' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/D6.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | D6: 'peugeot 405' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/D7.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | D7: 'peugeot 405 ph2' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/D8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | D82: 'peugeot 406 break' 3 | D83: 'peugeot 406 berline' 4 | D85: 'peugeot 406 coupe' 5 | 6 | versions: 7 | all: 8 | architecture: 'none' 9 | # TODO 10 | -------------------------------------------------------------------------------- /cars/D9.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | D92: 'peugeot 406 ph2 break' 3 | D93: 'peugeot 406 ph2 berline' 4 | D95: 'peugeot 406 ph2 coupe' 5 | 6 | versions: 7 | all: 8 | architecture: 'AEE2001.full' 9 | # TODO 10 | -------------------------------------------------------------------------------- /cars/E3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | E3: 'citroen C4 Cactus' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/E43.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | E43: 'citroen C5 III' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' # Assumed, but it may be MCC? 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/F3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | F3: ['citroen C4 Cactus (Brasil)', 'citroen C4 Cactus (Mercosur)'] 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/G9.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | B9: ['citroen Jumpy III', 'peugeot Expert III'] 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/I3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | I3: 'peugeot 4007' 3 | 4 | versions: 5 | all: 6 | architecture: 'MMC' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/I4.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | I4: 'citroen C-Crosser' 3 | 4 | versions: 5 | all: 6 | architecture: 'MMC' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/J3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | J4: 'peugeot 4008' 3 | 4 | versions: 5 | all: 6 | architecture: 'MMC' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/J4.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | J4: 'citroen C4 Aircross' 3 | 4 | versions: 5 | all: 6 | architecture: 'MMC' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/K0.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | K0: ['citroen Jumpy IIII', 'citroen SpaceTourer', 'peugeot Expert IIII', 'peugeot Traveller', 'opel Zafira Vivaro', 'opel Zafira Vivaro Life'] 3 | # utility version minivan version utility version minivan version utility version minivan version 4 | 5 | versions: 6 | all: 7 | architecture: 'AEE2010.full' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/K9.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | K9: ['citroen Berlingo IIII', 'peugeot Partner IIII', 'peugeot Rifter', 'opel Combo Life II', 'opel Combo Cargo'] 3 | # - 4 | # Utility version 5 | # Ludospace version 6 | # Ludospace version 7 | # Utility version 8 | 9 | versions: 10 | all: 11 | architecture: 'AEE2010.full' 12 | # TODO 13 | -------------------------------------------------------------------------------- /cars/KP0.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | KP0: 'peugeot Pick-Up (Africa/Maghreb)' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/KP1.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | KP0: 'peugeot Landtrek (Mercosur/Africa/Maghreb)' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/M24.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | M24: 'peugeot 205' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/M33.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | # The same car sold under many brands in china and iran only 3 | # Still making new with old i see :) 4 | M33: ['citroen C-Elysee II (China)', 'citroen C-Elysee II ph2 (China)', 'peugeot 301 (China/Iran)', 'peugeot 301 II (China)'] 5 | 6 | versions: 7 | all: 8 | architecture: 'AEE2010.full' 9 | # TODO 10 | -------------------------------------------------------------------------------- /cars/M44.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | # Do chinese people love french cars? 3 | M44: ['citroen C3 L (China)', 'citroen C3 XR (China)'] 4 | 5 | versions: 6 | all: 7 | architecture: 'AEE2010.full' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/M49.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | M49: ['citroen Berlingo', 'peugeot Partner'] 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/M59.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | M59: ['citroen Berlingo II (VAN)', 'peugeot Partner II (VAN)'] 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/M69.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | M69: ['citroen Berlingo II (CAN)', 'peugeot Partner II (CAN)'] 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/MCV.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | MCV: ['citroen Nemo', 'peugeot Bipper'] 3 | # citroen Nemo: Also code A9, but it's conflicting with the 208 series 4 | 5 | versions: 6 | all: 7 | architecture: 'Fiat.UDS' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/N2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | N2: 'citroen ZX' 3 | N2X: ['citroen Fukang (China)', 'citroen Fukang 988 (China)'] 4 | 5 | versions: 6 | all: 7 | architecture: 'none' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/N3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | N30: 'peugeot 306' # 3 door version 3 | N31: 'peugeot 306' # 5 door version 4 | N33: 'peugeot 306 sedan' 5 | 6 | versions: 7 | all: 8 | architecture: 'none' 9 | # TODO 10 | -------------------------------------------------------------------------------- /cars/N5.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | N30: 'peugeot 306 ph2' # 3 door version 3 | N31: 'peugeot 306 ph2' 4 | N32: 'peugeot 306 SW ph2' 5 | N33: 'peugeot 306 sedan ph2' 6 | 7 | versions: 8 | all: 9 | architecture: 'none' 10 | # TODO 11 | -------------------------------------------------------------------------------- /cars/N6.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | N6: 'citroen Xsara' 3 | N68: 'citroen Xsara Picasso' 4 | 5 | versions: 6 | all: 7 | architecture: 'AEE2001.full' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/N7.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | N7: 'citroen Xsara II' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/N8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | N8: 'citroen Xsara Picasso (Asia/Mercosur)' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/O2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | O2C: 'citroen Ami' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.ev' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/P2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | P21: 'peugeot 208 II' # 5 door version 3 | P24: 'peugeot 2008 II' 4 | P2J0: 'opel Corsa F' 5 | P2Q0: 'opel Mokka' 6 | 7 | versions: 8 | all: 9 | architecture: 'AEE2010.full' 10 | # TODO 11 | -------------------------------------------------------------------------------- /cars/P5.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T91: 'peugeot 308 III' # 5 door version 3 | T92: 'peugeot 308 III SW' # SW/Break version 4 | T94: 'peugeot 308 III SUV' # Apparently for the US market? 5 | 6 | versions: 7 | all: 8 | architecture: 'AEE2010.full' 9 | # TODO 10 | -------------------------------------------------------------------------------- /cars/P8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | P84: ['peugeot 3008 II', 'peugeot 4008 II (China)'] 3 | P87: 'peugeot 5008 II' 4 | P1U0: 'opel Grandland X' 5 | 6 | versions: 7 | all: 8 | architecture: 'AEE2010.full' 9 | # TODO 10 | -------------------------------------------------------------------------------- /cars/R2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | R2X: 'citroen ZX (China)' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/R3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | R3X: ['citroen C-Elysee (China)', 'citroen C-Elysee ph2 (China)'] 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/R8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | R82: 'peugeot 508 II SW' 3 | R83: ['peugeot 508 II', 'peugeot 508L (China)'] # peugeot 508L (China): Also called 508 Lounge 4 | 5 | versions: 6 | all: 7 | architecture: 'AEE2010.full' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/README.md: -------------------------------------------------------------------------------- 1 | # PSA car naming 2 | 3 | Apparently, the code is such 4 | 5 | * One letter, and one number, that's the base model 6 | * Maybe a 2nd number if there's multiple body types 7 | * * 0 for 3 doors 8 | * * 1 for 5 doors 9 | * * 2 for SW/Break 10 | * * 3 for 4 doors 11 | * * 4 for leisure/minivan/big utility 12 | * * 5 for Coupe 13 | * * 6 for Coupe/Cabriolet (convertible) 14 | * * 7 for Cabriolet (convertible) 15 | * * 8 for Monospace/Minispace 16 | * * 9 for (small) utility 17 | 18 | Restyling often (but not always) only increment the (first) number by 1 19 | -------------------------------------------------------------------------------- /cars/S1.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | S10: 'peugeot 106' # 3 door version 3 | S11: 'peugeot 106' # 5 door version 4 | 5 | versions: 6 | all: 7 | architecture: 'none' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/S2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | S20: 'peugeot 106 ph2' # 3 door version 3 | S21: 'peugeot 106 ph2' # 5 door version 4 | 5 | versions: 6 | all: 7 | architecture: 'none' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/S3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | S3: 'peugeot iON' 3 | 4 | versions: 5 | all: 6 | architecture: 'MMC.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/S4.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | S4: 'citroen C-Zero' 3 | 4 | versions: 5 | all: 6 | architecture: 'MMC.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/S8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | S8: 'citroen Saxo' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/S9.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | S9: 'citroen AX' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/T1.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T10: 'peugeot 206' # 3 door version 3 | T11: 'peugeot 206' # 5 door version 4 | T12: 'peugeot 206 SW' # Break/SW version 5 | T13: 'peugeot 206 berline' 6 | T16: 'peugeot 206 CC' # Coupe/Cabriolet version 7 | 8 | versions: 9 | all: 10 | architecture: 'none' 11 | # TODO 12 | -------------------------------------------------------------------------------- /cars/T1MUX.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T10MUX: 'peugeot 206' # 3 door version 3 | T11MUX: 'peugeot 206' # 5 door version 4 | T12MUX: 'peugeot 206 SW' # Break/SW version 5 | T16MUX: 'peugeot 206 CC' # Coupe/Cabriolet version 6 | 7 | versions: 8 | all: 9 | architecture: 'AEE2001.full' 10 | # TODO 11 | -------------------------------------------------------------------------------- /cars/T2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T21: 'citroen C2 (China)' # China only, really a 206 with a C2 body 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/T3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | # All of these are facelifted 206... 3 | # This must be the most profitable car ever made 4 | T30: ['naza 206 Bestari (Malaysia)', 'peugeot 206+', 'peugeot 207 "brasil" (Brasil)', 'peugeot 207 Compact (Mercosur)'] 5 | # Malaysia custom version 6 | # 3 door version 7 | # The "207" in brasil is actually a 206 8 | # The 207 Compact is the same as the 207 brasil 9 | 10 | T31: ['peugeot 206+', 'peugeot 207 Compact (Mercosur)', 'peugeot 207 "brasil" (Brasil)', 'peugeot 207i (Iran)'] 11 | # 3 door version 12 | # 5 door version as well 13 | # 5 door vesion of above 14 | # Iran specific version, looks like a 207 15 | 16 | T32: ['peugeot 206 Escapade', 'peugeot 207 Escapade'] 17 | # A 206SW with a SUV-ish bodykit 18 | # The same, facelifted 19 | 20 | T33: ['peugeot 206 SD (Iran)', 'peugeot 207 Compact Sedan (Mercosur)', 'peugeot 207i SD (Iran)', 'naza 207 (Malaysia)'] 21 | # sedan/berline version 22 | # 23 | # Iran specific version, sedan with 207 facelift 24 | # The 207 in malaysia is a 206SD 25 | 26 | T34: 'peugeot Hoggar (Mercosur)' # A pick-up version for mercosur market 27 | 28 | versions: 29 | all: 30 | architecture: 'AEE2001.full' 31 | # TODO 32 | -------------------------------------------------------------------------------- /cars/T5.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T50: 'peugeot 307 (VAN)' # 3 door version 3 | T51: 'peugeot 307 (VAN)' # 5 door version 4 | T52: 'peugeot 307 SW (VAN)' # SW/Break version 5 | T53: 'peugeot 307 Sedan (VAN) (Mercosur/China)' # Sedan version, only in Mercosur and China 6 | T56: 'peugeot 307 CC (VAN)' # Coupe/Cabriolet version (convertible) 7 | 8 | versions: 9 | all: 10 | architecture: 'AEE2001.full' 11 | # TODO 12 | -------------------------------------------------------------------------------- /cars/T6.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T60: 'peugeot 307 ph2 (CAN)' # 3 door version 3 | T61: 'peugeot 307 ph2 (CAN)' # 5 door version 4 | T62: 'peugeot 307 SW ph2 (CAN)' 5 | T63: 'peugeot 307 Sedan ph2 (Mercosur/China)' 6 | T66: 'peugeot 307 CC ph2' 7 | 8 | versions: 9 | all: 10 | architecture: 'AEE2004.full' 11 | # TODO 12 | -------------------------------------------------------------------------------- /cars/T7.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T70: 'peugeot 308' # 3 door version 3 | T71: 'peugeot 308' # 5 door version 4 | T72: 'peugeot 308 SW' # SW/Break version 5 | T73: ['peugeot 408 (China)', 'peugeot 308 Sedan (China)'] 6 | # China only version # China only sedan version 7 | T75: ['peugeot RCZ', 'peugeot RCZ-R'] 8 | T76: 'peugeot 308 CC' # CC version 9 | 10 | versions: 11 | all: 12 | architecture: 'AEE2004.full' 13 | # TODO 14 | -------------------------------------------------------------------------------- /cars/T8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T84: 'peugeot 3008' 3 | T84HY: 'peugeot 3008 (hybrid)' 4 | T87: 'peugeot 5008' 5 | T88: 'peugeot 3008 (China)' 6 | 7 | versions: 8 | all: 9 | architecture: 'AEE2004.full' 10 | # TODO 11 | -------------------------------------------------------------------------------- /cars/T9.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | T91: ['peugeot 308 II', 'peugeot 308S (China)'] 3 | # peugeot 308 II: 5 door version 4 | # peugeot 308S (China): china only version, only minor cosmetics changes 5 | T92: 'peugeot 308 II SW' # SW/Break version 6 | T93: 'peugeot 408 (China)' # Sedan version for china 7 | 8 | versions: 9 | all: 10 | architecture: 'AEE2010.full' 11 | # TODO 12 | -------------------------------------------------------------------------------- /cars/TPV.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | TPV: 'citroen 2CV' # TPV is for "Tres Petite Voiture" 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/U3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | U3: ['citroen Jumper', 'peugeot Boxer'] 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/U5.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | U5: ['citroen Jumper II', 'peugeot Boxer II'] 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/U6.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | U6: ['citroen Evasion', 'peugeot 806'] 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/U64.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | U64: ['citroen Jumpy', 'peugeot Expert'] 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/U65.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | U65: ['citroen Jumpy II', 'peugeot Expert II'] 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/V8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | V8: 'citroen XM' 3 | V8MUX: 'citroen XM (Mux)' 4 | 5 | versions: 6 | all: 7 | architecture: 'none' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/VCAN.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | VCAN: ['citroen C8 (CAN)', 'peugeot 807 (CAN)'] 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/VD.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | VD: 'citroen C15' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/VGD.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | VGD: 'citroen DS (Original)' # VGD is for "Voiture de Grande Diffusion" 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/VVAN.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | VVAN: ['citroen C8 (VAN)', 'peugeot 807 (VAN)'] 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/W2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | W22: 'peugeot 508 SW' 3 | W23: 'peugeot 508' 4 | W23HY: 'peugeot 508 Hybrid4' 5 | W24: 'peugeot 508 RXH' 6 | W24HY: 'peugeot 508 RXH Hybrid4' 7 | 8 | versions: 9 | all: 10 | architecture: 'AEE2010.full' 11 | # TODO 12 | -------------------------------------------------------------------------------- /cars/X1.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X1: 'citroen Xantia' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X2.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X3: 'citroen Xantia II' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X250.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X250: ['citroen Jumper III', 'peugeot Boxer III', 'citroen Jumper III Minibus', 'peugeot Boxer III Minibus'] 3 | 4 | versions: 5 | all: 6 | architecture: 'Fiat.CAN' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X250FL.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X250: ['citroen Jumper III ph2', 'peugeot Boxer III ph2'] 3 | 4 | versions: 5 | all: 6 | architecture: 'Fiat.UDS' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X3: 'citroen C5 ph2' # Restyled and moved to AEE2004, why they went backwards? 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X4.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X4: 'citroen C5' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X6.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X6: 'citroen C6' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X7.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X73: 'citroen C5' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X74.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X74: 'ds DS 7 Crossback' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2010.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/X8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | X81: 'citroen C6 (China)' 3 | X83: 'ds DS 9 E-tense' 4 | 5 | versions: 6 | all: 7 | architecture: 'AEE2010.full' 8 | # TODO 9 | -------------------------------------------------------------------------------- /cars/XB.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | XB: 'citroen BX' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/Y3.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | Y3: 'citroen XM' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/Y4.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | Y4: 'citroen XM ph2' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/Z6.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | Z6: 'peugeot 605' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/Z7.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | Z7: 'peugeot 605 ph2' 3 | 4 | versions: 5 | all: 6 | architecture: 'none' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/Z8.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | Z8: 'peugeot 607' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2001.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /cars/Z9.yml: -------------------------------------------------------------------------------- 1 | codes: 2 | Z9: 'peugeot 607R' 3 | 4 | versions: 5 | all: 6 | architecture: 'AEE2004.full' 7 | # TODO 8 | -------------------------------------------------------------------------------- /dbmuxev/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import glob 3 | import yaml 4 | 5 | class dbmuxev: 6 | def __init__(self, rootdir='.', lang='en'): 7 | self.rootdir = rootdir 8 | self.lang = lang 9 | 10 | # Define objects we're going to have 11 | self.archs = None 12 | self.cars = None 13 | 14 | def load_all(self): 15 | self.load_archs() 16 | self.load_nodes() 17 | self.load_cars() 18 | 19 | def load_archs(self, file='architectures.yml'): 20 | # Load architectures 21 | self.archs = None 22 | with open(f'{self.rootdir}/{file}', 'r') as archfile: 23 | try: 24 | self.archs = yaml.load(archfile, Loader=yaml.SafeLoader) 25 | except: 26 | print('cannot read architectures file') 27 | 28 | def load_nodes(self, dir='nodes'): 29 | if not self.archs: 30 | return None 31 | # Load nodes for architectures 32 | for arch, data in self.archs.items(): 33 | for variant, data in data.items(): 34 | if not 'networks' in self.archs[arch][variant]: 35 | print(f'WARN: no networks defined in {arch}.{variant}') 36 | continue 37 | 38 | filename = f'{self.rootdir}/{dir}/{arch}.{variant}.yml' 39 | if not os.path.isfile(filename): 40 | continue 41 | with open(filename) as varfile: 42 | try: 43 | nodes = yaml.load(varfile, Loader=yaml.SafeLoader) 44 | except: 45 | continue 46 | 47 | for node, data in nodes.items(): 48 | if not 'bus' in data: 49 | print(f'WARN: no bus for node {node} in {arch}.{variant}') 50 | continue 51 | for netbus in data['bus']: 52 | network, bus = netbus.split('.') 53 | if not network in self.archs[arch][variant]['networks']: 54 | print(f'WARN: network {network} not found in {arch}.{variant}') 55 | continue 56 | if not 'nodes' in self.archs[arch][variant]['networks'][network][bus]: 57 | self.archs[arch][variant]['networks'][network][bus]['nodes'] = {} 58 | self.archs[arch][variant]['networks'][network][bus]['nodes'][node] = data 59 | 60 | def load_frames(self, dir='buses'): 61 | pass 62 | 63 | def load_cars(self, dir='cars'): 64 | files = glob.glob(f'{dir}/*.yml') 65 | self.cars = {} 66 | for yfile in files: 67 | carname = os.path.basename(yfile).split('.')[0] 68 | with open(yfile, 'r') as ystream: 69 | try: 70 | print(f'loading yaml for {carname}') 71 | self.cars[carname] = yaml.load(ystream, Loader=yaml.SafeLoader) 72 | except: 73 | print(f'cannot read yaml for car {carname}') 74 | 75 | def list_arch_variants(self): 76 | if not self.archs: 77 | return None 78 | 79 | list = [] 80 | for arch, data in self.archs.items(): 81 | for variant, _ in data.items(): 82 | list.append(f'{arch}.{variant}') 83 | return list 84 | -------------------------------------------------------------------------------- /dbmuxev/doc/PSA.md: -------------------------------------------------------------------------------- 1 | # Rules specific for PSA 2 | 3 | * Names are in english, but original names are defined in french, in a `original_name` field 4 | * If a frame has multiple senders/receiver, put it under the BSI node 5 | -------------------------------------------------------------------------------- /dbmuxev/doc/README.md: -------------------------------------------------------------------------------- 1 | # DBMUXEv format specs v0.1 2 | 3 | ## Intro 4 | 5 | The DBMUXE format is a format aiming at defining formats for multiples types of embedded networks commonly found in cars. It was created because other formats (including DBCan from vector) didn't fit our needs (describing multiple generations of designs each including multiple networks) 6 | 7 | It's primarily used to describe the architectures from PSA (Peugeot/Citroen/DS), hence the name, DBMUXEv is a reference to "DBMUX", the internal software they use to describe their multiplexed networks, and 'ev' is often used at PSA to describe an evolution to something. 8 | 9 | ## Terminology 10 | 11 | * **architecture**: a name for a set of design templates (eg. AEE2004) 12 | * **variant**: the architecture variant (derivative) 13 | * **network**: a network is a set of buses (sharing nodes) 14 | * **bus**: a physical link between nodes (can be CAN, LIN, etc) 15 | * **node**: a controller/ECU connected to one or more bus(es) 16 | * **protocol**: the protocol used to send data on a bus 17 | * **message**: a frame sent on a bus (eg. a can frame) 18 | * **signal**: a data point sent in a message (eg. the bits) 19 | 20 | 21 | ## Directory structure 22 | 23 | ``` 24 | . 25 | ├── architectures.yml (the file describing the architectures) 26 | ├── cars 27 | │ ├── {id}.yml (the file linking the car to the architecture(s) 28 | ├── nodes 29 | │ ├── {architecture}.{variant}.yml 30 | ├── buses 31 | │ ├── {architecture}.{variant} 32 | │ │ ├── {network}.{bus} 33 | │ │ │ ├── {message}.yml (a file describing a frame) 34 | ├── diag 35 | │ ├── {architecture}.{variant} 36 | │ │ ├── {node} 37 | │ │ │ ├── dids 38 | │ │ │ │ ├── {did}.yml 39 | │ │ │ ├── dtcs.yml 40 | │ │ │ ├── resets.yml 41 | │ │ │ ├── routines 42 | │ │ │ │ ├── {routine}.yml 43 | ``` 44 | 45 | ## Rules 46 | 47 | * If a message is identical between multiple architectures (and versions of architectures), describe it in the most relevant version of the first architecture implementing it, then create symlink to it 48 | * The dot `.` is used as a separator when needed 49 | * The examples only set english (en) and french (fr) languages, but any language can be added with it's corresponding ISO code (2 letters) 50 | 51 | ## TODO 52 | 53 | * Define an include format for multiple messages based on the same template 54 | * Define these protocols 55 | * * LIN 56 | * * KWP2k 57 | * * K-lines 58 | * * PSA2k 59 | * Add UDS ioctl (do we need them?) 60 | * Probably refine nodes.yml 61 | -------------------------------------------------------------------------------- /dbmuxev/doc/architectures.yml: -------------------------------------------------------------------------------- 1 | # Architectures file 2 | 3 | AEE2001: # Architecture family 4 | full: # Variant name 5 | comment: 6 | en: 'full VAN+CAN' 7 | fr: 'VAN+CAN complet' 8 | networks: 9 | HS: # Network name 10 | CONF: # Bus name 11 | protocol: 'CAN' # Protocol the bus is running on 12 | bitrate: 125 # Bitrate the bus is running on in kbit/s 13 | # PLEASE DO NOT FEEL PRESSURED TO ADD OTHER LANGUAGE COMMENTS / DISPLAY_NAMES EVERYWHERE 14 | # THE ONLY TWO IMPORTANT LANGUAGES ARE FRENCH AND ENGLISH 15 | display_name: 16 | en: 'Comfort bus' 17 | fr: 'Bus confort' 18 | comment: 19 | en: 'Bus for comfort nodes' 20 | fr: 'Bus pour les noeuds confort' 21 | protocols: # List of protocols used in this architecture, diagnostics included 22 | - 'CAN' 23 | - 'LIN' 24 | -------------------------------------------------------------------------------- /dbmuxev/doc/car.yml: -------------------------------------------------------------------------------- 1 | # Car file 2 | 3 | # Codes used by the car 4 | codes: 5 | XX: "car YY" 6 | ZZ: ['car AA', 'car BB'] # not as common as XX 7 | 8 | # A car can have multiple names in different regions 9 | names: 10 | - 'Car commercial name' 11 | - 'Alternative name (region)' 12 | 13 | # And multiple architectures depending on the version 14 | versions: 15 | all: # or the version name, for example depending if it's a VAN or CAN car, or if it's an eco version 16 | architecture: 'AEE2001.full' 17 | nodes: # List of nodes for each network 18 | LS: # Network name 19 | - 'BSI' 20 | - 'CMB' 21 | -------------------------------------------------------------------------------- /dbmuxev/doc/diag_did.yml: -------------------------------------------------------------------------------- 1 | # DID for diag (UDS) message 2 | did: 0x2100 # hex format, uppercase letters 3 | name: TEST_DID # Name, uppercase and underscores only 4 | original_name: TEST_DID # Original name, optional 5 | display_name: # Display name, optional 6 | en: 'Test DID' 7 | fr: 'DID de test' 8 | comment: # Comment, optional 9 | en: 'This is a test DID' 10 | fr: 'Ceci est un DID de test' 11 | length: 5 # In bytes 12 | type: 'live' # or config 13 | params: 14 | PARAM_NAME: # Parameter name, uppercase and underscores only 15 | # The bits fields can either have a single bit location 16 | # or a range. Ranges are defined as (start)-(end) 17 | # Bits are defined in the form of (byte).(bit) 18 | # The bytes are big-endian (counting left to right) 19 | # The bit order is MSB->LSB (counting right to left) 20 | # eg. [byte 0] [byte 1] [byte 3] 21 | # / \ 22 | # ---- ---- 23 | # / \ 24 | # [b3] [b2] [b1] [b0] 25 | bits: '1.7-1.0' # Or single value, or 1.7-n for varchars 26 | unused: true # If unused, optional 27 | original_name: 'TEST_PARAM' 28 | display_name: 29 | en: 'Parameter name' 30 | fr: 'Nom du parametre' 31 | type: 'uint' # or sint, str 32 | min: 0x0000 33 | max: 0x0000 34 | values: 35 | 0x00: 36 | name: 37 | en: 'disabled' 38 | fr: 'Desactive' 39 | comment: 40 | en: 'Thing is disabled' 41 | fr: 'Truc est desactive' 42 | 43 | -------------------------------------------------------------------------------- /dbmuxev/doc/diag_dtc.yml: -------------------------------------------------------------------------------- 1 | # Diag (UDS) diagnostic trouble code (DTC) format 2 | 3 | 'P1200': 4 | display_name: 5 | en: 'Motor is dead' 6 | fr: 'Moteur HS' 7 | comment: 8 | en: 'The motor is dead' 9 | fr: 'Le moteur est mort' 10 | clues: # Clues/Indications about which sensor to check or what to do, optional 11 | en: 'Sensor to check' 12 | fr: 'Capteur a verifier' 13 | -------------------------------------------------------------------------------- /dbmuxev/doc/diag_routine.yml: -------------------------------------------------------------------------------- 1 | # Diag (UDS) routine definition 2 | routine: 0x0001 # Routine ID, hex format, uppercase letters 3 | original_name: ROUTINE_NAME # Original name, optional 4 | display_name: # Display name, optional 5 | en: 'Engine test' 6 | fr: 'Test du moteur' 7 | comment: # Comment, optional 8 | en: 'This starts the engine' 9 | fr: 'Demarre le moteur' 10 | return_values: # Possible return values, optional 11 | 0x00: 12 | en: 'Incorrect' 13 | fr: 'Test non reussi' 14 | -------------------------------------------------------------------------------- /dbmuxev/doc/message_can.yml: -------------------------------------------------------------------------------- 1 | # CAN message format 2 | id: 0x042 # hex format, uppercase letters, 0x format 3 | name: 'TEST_FRAME' # uppercase and underscores only 4 | alt_names: # List containing altnerative names, such as the original name, optional 5 | - 'MESSAGE_DE_TEST' 6 | length: 5 # Length in bytes 7 | comment: # Comment, optional 8 | # PLEASE DO NOT FEEL PRESSURED TO ADD OTHER LANGUAGE COMMENTS EVERYWHERE 9 | # THE ONLY TWO IMPORTANT LANGUAGES ARE FRENCH AND ENGLISH 10 | en: 'This is an english comment' 11 | fr: 'Ceci est un commentaire en francais' 12 | type: 'can' # or 'can-tp' 13 | periodicity: 'oneshot' # or 'trigger' or 'Xms' eg. '200ms' 14 | senders: # Nodes that can emit this message 15 | - 'BSI' 16 | receivers: # Nodes that uses this message 17 | - 'RADIO' 18 | 19 | # Message signals 20 | signals: 21 | FIRST_SIGNAL: # signal ID, uppercase and underscores only 22 | # The bits fields can either have a single bit location 23 | # or a range. Ranges are defined as (start)-(end) 24 | # Bits are defined in the form of (byte).(bit) 25 | # The bytes are big-endian (counting left to right) 26 | # The bit order is MSB->LSB (counting right to left) 27 | # eg. [byte 0] [byte 1] [byte 3] 28 | # / \ 29 | # ---- ---- 30 | # / \ 31 | # [b3] [b2] [b1] [b0] 32 | bits: '1.7-1.0' # Or single value, or '1.7-n' for can-tp 33 | unused: true # If it is unused, optional 34 | alt_names: # Alternative names, optional 35 | - 'SIGNAL' 36 | comment: # Comment, optional 37 | en: 'Signal comment' 38 | fr: 'Commentaire du signal' 39 | signed: true # This value defines if the CAN value is signed or unsigned 40 | # When not defined it defaults to false 41 | # For readability only define when signed! 42 | type: 'uint' # or sint, float, double, str 43 | min: 0x000 # Min value, optional 44 | max: 0x000 # Max value, optional 45 | units: 'kph' # Unit, optional 46 | offset: '-40' # Offset (value to add or substract), optional 47 | factor: '-100' # Factor (value to multiply or divide), optional 48 | values: # List of values with their names and descriptions 49 | 0x000: 50 | unused: false # Only set the unused flag when needed 51 | # Comment about the value 52 | en: 'enabled' 53 | fr: 'active' 54 | -------------------------------------------------------------------------------- /dbmuxev/doc/message_van.yml: -------------------------------------------------------------------------------- 1 | # VAN message format 2 | id: 0x042 # hex format, uppercase letters, 0x format 3 | name: 'TEST_FRAME' # uppercase and underscores only 4 | alt_names: # Alternative names, optional 5 | - 'MESSAGE_DE_TEST' 6 | length: 15 # Length in bytes 7 | comment: # Comment, optional 8 | en: 'This is an english comment' 9 | fr: 'Ceci est un commentaire en francais' 10 | type: 'van' 11 | periodicity: 'oneshot' # or 'trigger' or 'Xms' eg. '200ms' 12 | senders: 13 | - 'BSI' 14 | receivers: 15 | - 'RADIO' 16 | 17 | # Message signals 18 | signals: 19 | FIRST_SIGNAL: # signal ID, uppercase and underscores only 20 | # The bits fields can either have a single bit location 21 | # or a range. Ranges are defined as (start)-(end) 22 | # Bits are defined in the form of (byte).(bit) 23 | # The bytes are big-endian (counting left to right) 24 | # The bit order is MSB->LSB (counting right to left) 25 | # eg. [byte 0] [byte 1] [byte 3] 26 | # / \ 27 | # ---- ---- 28 | # / \ 29 | # [b3] [b2] [b1] [b0] 30 | bits: '1.7-1.0' # Or single value, or '1.7-n' for can-tp 31 | unused: true # If it is unused, optional 32 | alt_names: # Alternative names, optional 33 | - 'SIGNAL' 34 | comment: # Comment, optional 35 | en: 'Signal comment' 36 | fr: 'Commentaire du signal' 37 | type: 'uint' # or sint, float, double, str 38 | min: 0x000 # Min value, optional 39 | max: 0x000 # Max value, optional 40 | units: 'kph' # Unit, optional 41 | offset: '-40' # Offset (value to add or substract), optional 42 | factor: '-100' # Factor (value to multiply or divide), optional 43 | values: # List of values with their names and descriptions 44 | 0x000: 45 | unused: true # If it is unused, optional 46 | en: 'thing is enabled' 47 | fr: 'thing is disabled' 48 | -------------------------------------------------------------------------------- /dbmuxev/doc/nodes.yml: -------------------------------------------------------------------------------- 1 | # Nodes file 2 | 3 | BSI: # Node name, uppercase only 4 | bus: 5 | - '.' 6 | id: # hex format, uppercase letters 7 | HS: 0x12 # network name: format 8 | LS: 0x12 9 | alt: # Alternative names, list because some nodes have multiple names... 10 | - 'BSI' 11 | # PLEASE DO NOT FEEL PRESSURED TO ADD OTHER LANGUAGE COMMENTS / NAMES EVERYWHERE 12 | # THE ONLY TWO IMPORTANT LANGUAGES ARE FRENCH AND ENGLISH 13 | name: # For display 14 | en: 'Built-In System' 15 | fr: 'Boitier de Servitude Intelligent' 16 | comment: 17 | en: 'Main gateway' 18 | fr: 'Passerelle principale' 19 | diag_services: # List of UDS services implemented 20 | - 'reset' 21 | - 'read_dtc' 22 | - 'reset_dtc' 23 | - 'read_did' 24 | - 'write_did' 25 | - 'read_mem' 26 | - 'write_mem' 27 | - 'download' 28 | - 'upload' 29 | - 'ioctl' 30 | diag_sessions: # If the node uses custom sessions 31 | 0x42: 'custom session name' 32 | diag_reset: # If the node uses custom reset schemes 33 | 0x42: 'custom reset scheme name' 34 | -------------------------------------------------------------------------------- /dumpall.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from pprint import pprint 4 | from dbmuxev import dbmuxev 5 | 6 | db = dbmuxev() 7 | db.load_all() 8 | 9 | print('==> Architectures, nodes and frames') 10 | pprint(db.archs) 11 | 12 | print('==> Cars') 13 | pprint(db.cars) 14 | 15 | 16 | -------------------------------------------------------------------------------- /psa-db-tool/README.md: -------------------------------------------------------------------------------- 1 | # PSA-DB-Tool 2 | 3 | ## Intro 4 | 5 | This is a tool for: 6 | * Converting from DBMUXE to DBC (ODX and maybe more will be) 7 | * Editing DBMUXE database in GUI (for now just plans) 8 | 9 | ## Build 10 | 11 | In this directory run `compile_script.sh` file: 12 | 13 | ```sh 14 | $ ./compile_script.sh 15 | ``` 16 | 17 | ## Usage 18 | From this directory go to `build` and run `psaDbTool`: 19 | 20 | ```sh 21 | $ cd build 22 | $ ./psaDbTool 23 | ``` 24 | 25 | For help use: 26 | ```sh 27 | $ ./psaDbTool -h 28 | ``` 29 | -------------------------------------------------------------------------------- /psa-db-tool/compile_script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ -d "src/submodules/rapidyaml" ] 4 | then 5 | echo "Submodule \"rapidyaml\" already exist. Continuing installation." 6 | else 7 | echo "Missing submodule \"rapidyaml\". Downloading now..." 8 | git submodule add https://github.com/biojppm/rapidyaml.git src/submodules/rapidyaml 9 | git submodule update --init --recursive 10 | fi 11 | 12 | #cfg=${1:-Release} 13 | #cmake -S ./src -B ./build/$cfg 14 | #cmake --build ./build/$cfg 15 | 16 | cmd=${1:--help} 17 | 18 | if [ $cmd = "--rebuild" ] 19 | then 20 | cmake -S ./src -B ./build 21 | cmake --build ./build --clean-first 22 | elif [ $cmd = "--build" ] 23 | then 24 | cmake -S ./src -B ./build 25 | cmake --build ./build 26 | else 27 | echo "No argument means you need HELP" 28 | echo "ARGUMENT FUNCTION" 29 | echo "--build = normal build" 30 | echo "--rebuild = rebuild" 31 | echo "everything else = this help dialog" 32 | fi 33 | -------------------------------------------------------------------------------- /psa-db-tool/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.12) 2 | project(psaDbTool LANGUAGES CXX VERSION 0.1) 3 | 4 | add_subdirectory(submodules/rapidyaml ryml) 5 | # find_package(ryml REQUIRED) 6 | 7 | SET(GCC_COVERAGE_COMPILE_FLAGS "-g") 8 | 9 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}") 10 | 11 | add_executable(psaDbTool psaDbTool.cpp dbmuxeController.cpp fileController.cpp DbcController.cpp CanFrame.cpp CanSignal.cpp LanguageField.cpp) 12 | target_link_libraries(psaDbTool ryml::ryml) 13 | 14 | add_custom_target(run psaDbTool 15 | COMMAND $ 16 | DEPENDS psaDbTool 17 | COMMENT "running: $") 18 | -------------------------------------------------------------------------------- /psa-db-tool/src/CanFrame.cpp: -------------------------------------------------------------------------------- 1 | #include "CanFrame.h" 2 | #include 3 | #include 4 | 5 | void CanFrame::printAltNames() const 6 | { 7 | printVector(altNames_); 8 | } 9 | 10 | std::string CanFrame::getComment(const char *lang) const 11 | { 12 | for (size_t i=0; i someVector) const 47 | { 48 | for (std::string unitInVector : someVector) 49 | { 50 | std::cout << "\'" << unitInVector << "\' "; 51 | } 52 | std::cout << std::endl; 53 | } 54 | 55 | void CanFrame::print() const 56 | { 57 | std::cout << "CAN_ID: 0x" << std::hex << hexId_; 58 | std::cout << " (" << std::dec << hexId_ << ") "; 59 | std::cout << "NAME: " << name_ << std::endl; 60 | std::cout << "ALTERNATIVE NAMES: "; 61 | printAltNames(); 62 | std::cout << "COMMENT: " << getComment("en") << std::endl; 63 | std::cout << "TYPE: " << type_ << " "; 64 | std::cout << "LENGTH: " << length_ << " "; 65 | std::cout << "PERIOD: " << period_ << std::endl; 66 | std::cout << "SENDERS: "; 67 | printSenders(); 68 | std::cout << "RECEIVERS: "; 69 | printReceivers(); 70 | std::cout << "SIGNALS: _____NAME____BITS__TYPE__FACTOR__OFFSET____MIN____MAX___UNITS_COMMENT____VALUES------------" << std::endl; 71 | for (CanSignal signal : signals_) 72 | signal.print(); 73 | } 74 | -------------------------------------------------------------------------------- /psa-db-tool/src/CanFrame.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "CanSignal.h" 5 | #include "LanguageField.h" 6 | 7 | class CanFrame 8 | { 9 | public: 10 | CanFrame() {} 11 | ~CanFrame() {} 12 | 13 | uint16_t getHexId() const { return hexId_; } 14 | std::string getName() const { return name_; } 15 | void printAltNames() const; 16 | uint16_t getLength() const { return length_; } 17 | std::string getComment(const char *lang) const; 18 | std::string getType() const { return type_; } 19 | std::string getPeriod() const { return period_; } 20 | 21 | std::vector getSenders() const { return senders_; } 22 | std::vector getSignals() const { return signals_; } 23 | void print() const; 24 | void printSenders() const; 25 | void printReceivers() const; 26 | 27 | void setHexId(uint16_t hexId) { hexId_ = hexId; } 28 | // void setHexId(string hexId) { hexId_ = stoi(hexId, nullptr, 16); } 29 | void setName(std::string name) { name_ = name; } 30 | void addAltName(std::string name) { altNames_.push_back(name); } 31 | void setLength(uint16_t length) { length_ = length; } 32 | void addComment(LanguageField comment) { comments_.push_back(comment); } 33 | void setType(std::string type) { type_ = type; } 34 | void setPeriod(std::string period) { period_ = period; } 35 | void addSender(std::string sender) { senders_.push_back(sender); } 36 | void addReceiver(std::string receiver) { receivers_.push_back(receiver); } 37 | void addSignal(CanSignal signal) { signals_.push_back(signal); } 38 | 39 | bool isFrameInvalid() const; 40 | 41 | private: 42 | uint16_t hexId_ = 0xFFFF; 43 | std::string name_; 44 | std::vector altNames_; 45 | uint16_t length_ = 0xFFFF; 46 | std::vector comments_; 47 | std::string type_; 48 | std::string period_; 49 | std::vector senders_; 50 | std::vector receivers_; 51 | std::vector signals_; 52 | 53 | void printVector(std::vector someVector) const; 54 | }; 55 | -------------------------------------------------------------------------------- /psa-db-tool/src/CanSignal.cpp: -------------------------------------------------------------------------------- 1 | #include "CanSignal.h" 2 | #include 3 | #include 4 | 5 | CanSignal::~CanSignal() 6 | { 7 | } 8 | 9 | std::string CanSignal::getComment(const char *lang) const 10 | { 11 | for (size_t i=0; i meanings) 54 | { 55 | valueMeaning_.push_back(make_pair(value, meanings)); 56 | } 57 | -------------------------------------------------------------------------------- /psa-db-tool/src/CanSignal.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include "LanguageField.h" 7 | 8 | class CanSignal 9 | { 10 | public: 11 | CanSignal(std::string n = "") : name_ (n) {} 12 | ~CanSignal(); 13 | 14 | std::string getName() const { return name_; } 15 | std::string getComment(const char *lang) const; 16 | std::string getType() const { return type_; } 17 | int16_t getStartByte() const { return startByte_; } 18 | int16_t getStartBit() const { return startBit_; } 19 | int16_t getEndByte() const { return endByte_; } 20 | int16_t getEndBit() const { return endBit_; } 21 | bool getIsLittleEndian() const { return isLittleEndian_; } 22 | float getFactor() const { return factor_; } 23 | int16_t getOffset() const { return offset_; } 24 | int16_t getMin() const { return min_; } 25 | int16_t getMax() const { return max_; } 26 | std::string getUnits() const { return units_; } 27 | size_t getValueCount() const { return valueMeaning_.size(); } 28 | uint16_t getValueNumber(uint16_t n) const; 29 | std::string getValueMeaning(uint16_t n, const char *lang) const; 30 | 31 | void print() const; 32 | 33 | void setName(std::string name) { name_ = name; } 34 | void setComment(std::vector comment) { comment_ = comment; } 35 | void setType(std::string type) { type_ = type; } 36 | void setStartByte(int16_t startByte) { startByte_ = startByte; } 37 | void setStartBit(int16_t startBit) { startBit_ = startBit; } 38 | void setEndByte(int16_t endByte) { endByte_ = endByte; } 39 | void setEndBit(int16_t endBit) { endBit_ = endBit; } 40 | void setIsLittleEndian(bool isLittleEndian) { isLittleEndian_ = isLittleEndian; } 41 | void setFactor(float factor) { factor_ = factor; } 42 | void setOffset(int16_t offset) { offset_ = offset; } 43 | void setMin(int16_t min) { min_ = min; } 44 | void setMax(int16_t max) { max_ = max; } 45 | void setUnits(std::string units) { units_ = units; } 46 | void addValueMeaning(int16_t value, std::vector meanings); 47 | 48 | private: 49 | std::string name_; 50 | std::vector comment_; 51 | std::string type_; 52 | int16_t startByte_; 53 | int16_t startBit_; 54 | int16_t endByte_; 55 | int16_t endBit_; 56 | bool isLittleEndian_; 57 | float factor_; 58 | int16_t offset_; 59 | int16_t min_; 60 | int16_t max_; 61 | std::string units_; 62 | std::vector>> valueMeaning_; 63 | }; 64 | 65 | -------------------------------------------------------------------------------- /psa-db-tool/src/DbcController.cpp: -------------------------------------------------------------------------------- 1 | #include "DbcController.h" 2 | #include 3 | #include 4 | #include 5 | 6 | void DbcController::generateDbc(const char *filename, std::vector const &canFrameList) { 7 | std::ofstream dbcFile(filename, std::ofstream::out); 8 | 9 | dbcFile << "VERSION \"\"\n\n\n" 10 | "NS_ :\n" 11 | " NS_DESC_\n" 12 | " CM_\n" 13 | " BA_DEF_\n" 14 | " BA_\n" 15 | " VAL_\n" 16 | " CAT_DEF_\n" 17 | " CAT_\n" 18 | " FILTER\n" 19 | " BA_DEF_DEF_\n" 20 | " EV_DATA_\n" 21 | " ENVVAR_DATA_\n" 22 | " SGTYPE_\n" 23 | " SGTYPE_VAL_\n" 24 | " BA_DEF_SGTYPE_\n" 25 | " BA_SGTYPE_\n" 26 | " SIG_TYPE_REF_\n" 27 | " VAL_TABLE_\n" 28 | " SIG_GROUP_\n" 29 | " SIG_VALTYPE_\n" 30 | " SIGTYPE_VALTYPE_\n" 31 | " BO_TX_BU_\n" 32 | " BA_DEF_REL_\n" 33 | " BA_REL_\n" 34 | " BA_DEF_DEF_REL_\n" 35 | " BU_SG_REL_\n" 36 | " BU_EV_REL_\n" 37 | " BU_BO_REL_\n" 38 | " SG_MUL_VAL_\n\n" 39 | "BS_: \n"; 40 | 41 | /* FINDING ALL SENDERS */ 42 | dbcFile << "BU_: "; 43 | std::vector senderList; 44 | for (size_t frameNr = 0; frameNr < canFrameList.size(); frameNr++) { 45 | std::vector frameSenders = canFrameList[frameNr].getSenders(); 46 | for (size_t senderNr = 0; senderNr < frameSenders.size(); senderNr++) { 47 | if (std::find(senderList.begin(), senderList.end(), frameSenders[senderNr]) == senderList.end()) { 48 | senderList.push_back(frameSenders[senderNr]); 49 | dbcFile << frameSenders[senderNr] << " "; 50 | } 51 | } 52 | } 53 | dbcFile << std::endl; 54 | 55 | /* PARSING CAN FRAME PARAMETERS */ 56 | for (size_t frameNr = 0; frameNr < canFrameList.size(); frameNr++) { 57 | std::cout << "Parsing CAN message [" << canFrameList[frameNr].getHexId() << "]\n"; 58 | dbcFile << "BO_ " << canFrameList[frameNr].getHexId() << " " << canFrameList[frameNr].getName() 59 | << ": " << canFrameList[frameNr].getLength() << " " << canFrameList[frameNr].getSenders().at(0) << "\n"; 60 | 61 | /* PARSING ALL SIGNALS IN CORRESPONDING FRAME */ 62 | std::vector signalList = canFrameList[frameNr].getSignals(); 63 | for (size_t signNr = 0; signNr < signalList.size(); signNr++) { 64 | CanSignal *pSignal = &signalList[signNr]; 65 | 66 | int16_t startBit = calculateStartBit(pSignal->getStartByte(), pSignal->getStartBit()); 67 | int16_t signalLength = calculateSignalLength(pSignal->getStartByte(), 68 | pSignal->getStartBit(), pSignal->getEndByte(), pSignal->getEndBit()); 69 | 70 | dbcFile << " SG_ " << pSignal->getName() << " : " 71 | << startBit << "|" 72 | << signalLength << "@" 73 | << pSignal->getIsLittleEndian() << "+ (" 74 | << pSignal->getFactor() << "," 75 | << pSignal->getOffset() << ") [0|1] \"" 76 | << pSignal->getUnits() << "\" Vector__XXX\n"; 77 | } 78 | dbcFile << std::endl; 79 | } 80 | 81 | /* CONSTRUCTING VALUE TABLE */ 82 | for (size_t frameNr = 0; frameNr < canFrameList.size(); frameNr++) { 83 | std::vector signalList = canFrameList[frameNr].getSignals(); 84 | for (size_t signNr = 0; signNr < signalList.size(); signNr++) { 85 | CanSignal *pSignal = &signalList[signNr]; 86 | if (pSignal->getValueCount() != 0) { 87 | dbcFile << "VAL_ " << canFrameList[frameNr].getHexId() << " " 88 | << pSignal->getName(); 89 | for (size_t valNr = 0; valNr < pSignal->getValueCount(); valNr++) { 90 | dbcFile << " " << pSignal->getValueNumber(valNr) 91 | << " \"" << pSignal->getValueMeaning(valNr, "en") << "\""; 92 | } 93 | dbcFile << ";\n"; 94 | } 95 | } 96 | } 97 | } 98 | 99 | int16_t DbcController::calculateStartBit(int16_t startByte, int16_t startBit) 100 | { 101 | return (startByte-1)*8 + startBit; 102 | } 103 | 104 | int16_t DbcController::calculateSignalLength(int16_t startByte, int16_t startBit, 105 | int16_t endByte, int16_t endBit) 106 | { 107 | return (endByte-startByte)*8 + startBit - endBit + 1; 108 | } 109 | -------------------------------------------------------------------------------- /psa-db-tool/src/DbcController.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CanFrame.h" 4 | 5 | class DbcController 6 | { 7 | public: 8 | DbcController() = default; 9 | ~DbcController() = default; 10 | 11 | void generateDbc(const char *filename, std::vector const &canFrameList); 12 | 13 | private: 14 | int16_t calculateStartBit(int16_t startByte, int16_t startBit); 15 | 16 | int16_t calculateSignalLength(int16_t startByte, int16_t startBit, 17 | int16_t endByte, int16_t endBit); 18 | 19 | }; 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /psa-db-tool/src/LanguageField.cpp: -------------------------------------------------------------------------------- 1 | #include "LanguageField.h" 2 | #include 3 | 4 | LanguageField::LanguageField(const char* lang, std::string text) 5 | { 6 | memcpy(language_, lang, 2); 7 | text_ = text; 8 | } 9 | 10 | LanguageField::~LanguageField() 11 | { 12 | } 13 | 14 | bool LanguageField::isLanguageEqual(const char *lang) const 15 | { 16 | return (0 == strncmp(language_, lang, sizeof(language_))); 17 | } 18 | -------------------------------------------------------------------------------- /psa-db-tool/src/LanguageField.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class LanguageField 6 | { 7 | public: 8 | LanguageField(const char *lang, std::string text); 9 | ~LanguageField(); 10 | 11 | const char* getLanguage() const { return &language_[0]; } 12 | bool isLanguageEqual(const char *lang) const; 13 | std::string getText() const { return text_; } 14 | private: 15 | char language_[2]; 16 | std::string text_; 17 | }; 18 | -------------------------------------------------------------------------------- /psa-db-tool/src/dbmuxeController.h: -------------------------------------------------------------------------------- 1 | #ifndef PARSE_PSA_YAML 2 | #define PARSE_PSA_YAML 3 | 4 | #include "fileController.h" 5 | #include "CanFrame.h" 6 | 7 | 8 | int parsePsaYaml(const char *yamlFile, CanFrame &parsedMsg); 9 | 10 | /** 11 | * @brief Parse all signal position parameters using textLine from YAML file 12 | * @param textLine - string from YAML file 13 | * @param canSignal - object where parsed data will be written 14 | */ 15 | void parseSignalPosition(std::string &textLine, CanSignal &canSignal); 16 | 17 | /** 18 | * @brief Splits string into two strings separated by first delimiter symbol 19 | * @param text - reference to input text. At the end it will lose the beginning till delimiter 20 | * @param delimiter - separation symbol 21 | * @param firstHalf - reference where 1st half of text will be stored 22 | * @retval 0 if delimiter found, 1 - not found 23 | */ 24 | bool splitString(std::string &text, char delimiter, std::string &firstHalf); 25 | 26 | #endif // PARSE_PSA_YAML -------------------------------------------------------------------------------- /psa-db-tool/src/fileController.cpp: -------------------------------------------------------------------------------- 1 | #include "fileController.h" 2 | 3 | std::string get_file_contents(const char *filename) 4 | { 5 | std::ifstream in(filename, std::ios::in | std::ios::binary); 6 | if (!in) 7 | { 8 | std::cerr << "Could not open " << filename << std::endl; 9 | exit(1); 10 | } 11 | std::ostringstream contents; 12 | contents << in.rdbuf(); 13 | return contents.str(); 14 | } -------------------------------------------------------------------------------- /psa-db-tool/src/fileController.h: -------------------------------------------------------------------------------- 1 | #ifndef FILE_CONTROLLER 2 | #define FILE_CONTROLLER 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | std::string get_file_contents(const char *filename); 9 | 10 | #endif // FILE_CONTROLLER -------------------------------------------------------------------------------- /psa-db-tool/src/psaDbTool.cpp: -------------------------------------------------------------------------------- 1 | #include "dbmuxeController.h" 2 | #include "DbcController.h" 3 | #include 4 | #include 5 | #include 6 | 7 | enum Command { NONE, LOAD_FILE, LOAD_DIR, GENERATE_DBC }; 8 | 9 | inline void print_usage(void); 10 | 11 | int main(int argc, char const *argv[]) { 12 | if (argc < 2) { 13 | print_usage(); 14 | return EXIT_SUCCESS; 15 | } 16 | 17 | Command execCommand = NONE; 18 | std::vector parsedFrameList; 19 | bool verbose_print = false; 20 | 21 | auto start_time = std::chrono::high_resolution_clock::now(); 22 | for (size_t argNr = 1; argNr < argc; argNr++) { 23 | if ('-' == argv[argNr][0]) { // COMMAND SELECTION 24 | if (!strcmp("-help", argv[argNr]) || !strcmp("--help", argv[argNr]) || !strcmp("-h", argv[argNr])) { 25 | print_usage(); 26 | return EXIT_SUCCESS; 27 | } else if (!strcmp("-Lf", argv[argNr])) { 28 | execCommand = LOAD_FILE; 29 | } else if (!strcmp("-Ld", argv[argNr])) { 30 | execCommand = LOAD_DIR; 31 | } else if (!strcmp("-Gd", argv[argNr])) { 32 | execCommand = GENERATE_DBC; 33 | } else if (!strcmp("-v", argv[argNr])) { 34 | verbose_print = true; 35 | } else { 36 | std::cout << "Command " << argv[argNr] << " is not recognized by psaDbTool.\n"; 37 | print_usage(); 38 | return EXIT_SUCCESS; 39 | } 40 | } else { // ARGUMENTS CAPTURE 41 | switch (execCommand) { 42 | case NONE: 43 | std::cout << "You have to select a command first. Then give args."; 44 | print_usage(); 45 | return EXIT_SUCCESS; 46 | break; 47 | case LOAD_FILE: 48 | std::cout << " - Loading file [" << argv[argNr] << "].\n"; 49 | parsedFrameList.emplace_back(); 50 | parsePsaYaml(argv[argNr], parsedFrameList.at(parsedFrameList.size() - 1)); 51 | break; 52 | case LOAD_DIR: 53 | std::cout << " - Loading directory [" << argv[argNr] << "].\n"; 54 | DIR *p_inputFileDir; 55 | struct dirent *p_inputFileDirStruct; 56 | p_inputFileDir = opendir(argv[argNr]); 57 | if (p_inputFileDir == nullptr) { 58 | std::cout << "Directory [" << argv[argNr] << "] doesn't exist.\n"; 59 | return EXIT_FAILURE; 60 | } 61 | while ((p_inputFileDirStruct = readdir(p_inputFileDir)) != nullptr) { 62 | if ('.' == p_inputFileDirStruct->d_name[0] || !strstr(p_inputFileDirStruct->d_name, ".yml")) 63 | continue; 64 | parsedFrameList.emplace_back(); 65 | std::cout << "File in dir: " << p_inputFileDirStruct->d_name << ".\n"; 66 | char fullFileName[256]; 67 | strcpy(fullFileName, argv[argNr]); 68 | strcat(fullFileName, p_inputFileDirStruct->d_name); 69 | parsePsaYaml(fullFileName, parsedFrameList.at(parsedFrameList.size() - 1)); 70 | } 71 | break; 72 | case GENERATE_DBC: 73 | std::cout << " - Generating DBC [" << argv[argNr] << "]\n"; 74 | DbcController dbcController; 75 | dbcController.generateDbc(argv[argNr], parsedFrameList); 76 | break; 77 | default: 78 | std::cout << "This should never happen..."; 79 | break; 80 | } 81 | } 82 | } 83 | 84 | // PRINT WHAT WE COLLECTED FROM YAML FILES 85 | if (verbose_print) { 86 | for (size_t i = 0; i < parsedFrameList.size(); i++) { 87 | parsedFrameList.at(i).print(); 88 | } 89 | } 90 | 91 | auto stop_time = std::chrono::high_resolution_clock::now(); 92 | auto execute_time = std::chrono::duration_cast(stop_time - start_time); 93 | std::cout << "Time taken to complete: " << execute_time.count() << " microseconds.\n"; 94 | 95 | return EXIT_SUCCESS; 96 | } 97 | 98 | void print_usage(void) { 99 | std::cout << "Usage:\n" 100 | << " psaDbTool [options]\n" 101 | << " psaDbTool [options] [options]\n" 102 | << " psaDbTool [options] [options] [options]...\n\n" 103 | << "Options\n" 104 | << " -Lf ... = Loads YAML files.\n" 105 | << " -Ld ... = Loads all YAML files in directory.\n" 106 | << " -Gd = Generates DBC file.\n" 107 | << " -v = Verbosely list collected information.\n" 108 | << "Examples\n" 109 | << " ./psaDbTool -Ld ../../buses/AEE2004.full/HS.IS/ -v -Gd ./HS_IS.dbc\n" 110 | << " ./psaDbTool -Lf ../../buses/AEE2004.full/HS.IS/0A8.yml " 111 | << "../../buses/AEE2004.full/HS.IS/072.yml -Gd ./immo.dbc\n"; 112 | } 113 | -------------------------------------------------------------------------------- /sandbox/immobilizer_algorithm.c: -------------------------------------------------------------------------------- 1 | // Immobilizer challenge-response implementation 2 | // This should match the authentication between the BSI and the engine ECU 3 | // The protocol is pretty simple: 4 | // * On frame 0x72 (ECU to BSI): 0x00 (4 bytes of challenge) 5 | // * On frame 0xA8 (BSI to ECU): 0x04 (4 bytes of response) 6 | // * If the challenge is accepted: {0x00, 0x00, 0x00, 0x00, 0x00} on frame 0x72 7 | // Thanks a lot to Wouter Bokslag for the original work and algorithm :) 8 | 9 | #include 10 | 11 | // Transformation function with PSA not-so-secret sauce 12 | int16_t transform(uint8_t data_msb, uint8_t data_lsb, uint8_t sec[]) 13 | { 14 | int16_t data = (data_msb << 8) | data_lsb; 15 | int32_t result = ((data % sec[0]) * sec[2]) - ((data / sec[0]) * sec[1]); 16 | if (result < 0) 17 | result += (sec[0] * sec[2]) + sec[1]; 18 | return result; 19 | } 20 | 21 | // Challenge reponse calculation for a given pin and challenge 22 | // Challenge and pin are both 4*8bits values 23 | uint32_t compute_response(uint8_t pin[], uint8_t chg[]) 24 | { 25 | // Hardcoded secrets... 26 | int8_t sec_1[3] = {0xB2, 0x3F, 0xAA}; 27 | int8_t sec_2[3] = {0xB1, 0x02, 0xAB}; 28 | 29 | // Compute each 16bits part of the response and return it 30 | int16_t res_msb = transform(chg[0], chg[2], sec_1) | transform(pin[0], pin[3], sec_2); 31 | int16_t res_lsb = transform(chg[1], chg[3], sec_2) | transform(pin[1], pin[2], sec_1); 32 | return (res_msb << 16) | res_lsb; 33 | } 34 | -------------------------------------------------------------------------------- /sandbox/uds_auth_algorithm.c: -------------------------------------------------------------------------------- 1 | // UDS SA challenge-response implementation 2 | // This should match the authentication between diagbox and any ECU 3 | #include 4 | 5 | // Transformation function with PSA not-so-secret sauce 6 | int16_t transform(uint8_t data_msb, uint8_t data_lsb, uint8_t sec[]) 7 | { 8 | int16_t data = (data_msb << 8) | data_lsb; 9 | int32_t result = ((data % sec[0]) * sec[2]) - ((data / sec[0]) * sec[1]); 10 | if (result < 0) 11 | result += (sec[0] * sec[2]) + sec[1]; 12 | return result; 13 | } 14 | 15 | // Challenge reponse calculation for a given pin and challenge 16 | // Challenge (seed) is 4 bytes and pin (key) is 2 bytes 17 | uint32_t compute_response(uint8_t pin[], uint8_t chg[]) 18 | { 19 | // Still hardcoded secrets 20 | int8_t sec_1[3] = {0xB2, 0x3F, 0xAA}; 21 | int8_t sec_2[3] = {0xB1, 0x02, 0xAB}; 22 | 23 | // Compute each 16b part of the response, with the twist, and return it 24 | int16_t res_msb = transform(pin[0], pin[1], sec_1) | transform(chg[0], chg[3], sec_2); 25 | int16_t res_lsb = transform(chg[1], chg[2], sec_1) | transform(res_msb>>8, res_msb&0xFF, sec_2); 26 | return (msb << 16) | lsb; 27 | } 28 | -------------------------------------------------------------------------------- /sandbox/uds_auth_algorithm.py: -------------------------------------------------------------------------------- 1 | # Python3 version of the UDS auth algorithm by infizer91 (https://github.com/infizer91) 2 | # Thanks a lot for the port! 3 | 4 | def transform(data, sec): 5 | if data > 32767: 6 | data = -65536 | data 7 | 8 | if data > 0: 9 | q = int(data % int(sec[0])) 10 | else: 11 | q = int(data % int(sec[0])) - sec[0] 12 | 13 | a = (q * int(sec[2])) & 0xFFFFFFFF 14 | b = ((int(round(data / int(sec[0]), 12)) & 0xFFFFFFFF) * sec[1]) & 0xFFFFFFFF 15 | 16 | subresult = (a - b) & 0xFFFFFFFF 17 | 18 | if subresult > 0x7FFFFFFF: 19 | subresult = subresult + (sec[0] * sec[2]) + sec[1] 20 | 21 | subresult = subresult & 0xFFFF 22 | return subresult 23 | 24 | 25 | def get_key(seed_txt, app_key_txt): 26 | seed = [seed_txt[0:2], seed_txt[2:4], seed_txt[4:6], seed_txt[6:8]] 27 | app_key = [app_key_txt[0:2], app_key_txt[2:4]] 28 | 29 | sec_1 = [0xB2, 0x3F, 0xAA] 30 | sec_2 = [0xB1, 0x02, 0xAB] 31 | 32 | res_msb_1 = transform(int(app_key[0] + app_key[1], 16), sec_1) 33 | res_msb_2 = transform(int(seed[0] + seed[3], 16), sec_2) 34 | res_msb = res_msb_1 | res_msb_2 35 | 36 | res_lsb = transform(int(seed[1] + seed[2], 16), sec_1) | transform(res_msb, sec_2) 37 | 38 | subresult = (res_msb << 16) | res_lsb 39 | subresult = hex(subresult) 40 | subresult = subresult.rjust(8, '0') 41 | 42 | return [hex(int(subresult[2:4], 16)), hex(int(subresult[4:6], 16)), hex(int(subresult[6:8], 16)), 43 | hex(int(subresult[8:10], 16))] 44 | --------------------------------------------------------------------------------