{"id":41928098,"url":"https://github.com/eclipse-opensovd/odx-converter","last_synced_at":"2026-01-25T17:34:00.998Z","repository":{"id":306385875,"uuid":"1025564439","full_name":"eclipse-opensovd/odx-converter","owner":"eclipse-opensovd","description":"🚗 ODX to MDD Converter 🚀","archived":false,"fork":false,"pushed_at":"2026-01-14T08:15:35.000Z","size":495,"stargazers_count":10,"open_issues_count":6,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-14T12:11:58.495Z","etag":null,"topics":["automotive","odx","sovd"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-opensovd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-24T12:54:44.000Z","updated_at":"2026-01-14T08:09:29.000Z","dependencies_parsed_at":"2025-10-07T03:24:41.283Z","dependency_job_id":"d12c52b3-a2dc-4c1b-a428-8ff93a022d76","html_url":"https://github.com/eclipse-opensovd/odx-converter","commit_stats":null,"previous_names":["eclipse-opensovd/odx-converter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eclipse-opensovd/odx-converter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-opensovd%2Fodx-converter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-opensovd%2Fodx-converter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-opensovd%2Fodx-converter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-opensovd%2Fodx-converter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-opensovd","download_url":"https://codeload.github.com/eclipse-opensovd/odx-converter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-opensovd%2Fodx-converter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28755956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T16:32:25.380Z","status":"ssl_error","status_checked_at":"2026-01-25T16:32:09.189Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automotive","odx","sovd"],"created_at":"2026-01-25T17:34:00.319Z","updated_at":"2026-01-25T17:34:00.992Z","avatar_url":"https://github.com/eclipse-opensovd.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚗 ODX to MDD Converter 🚀\n\n## Introduction 🌟\n\nThis is the repository of the ODX to MDD Converter! This tool transforms packed ODX files (.pdx) into a custom format called \"Marvelous Diagnostic Description\" (MDD).\n\n[OpenSOVDs Classic Diagnostic Adapter (CDA)](https://github.com/eclipse-opensovd/classic-diagnostic-adapter) solution is designed for embedded systems, and needs manageable file sizes with simple processing. Enter the MDD format, developed to tackle these challenges.\n\nPDX files are essentially compressed archives of multiple ODX files, which follow the ISO-22091 standard in the automotive industry for exchanging diagnostic descriptions of electronic control units (ECUs). These XML-based files can be quite large, often reaching hundreds of megabytes, making their use impractical due to their size and processing complexity. This is also why many diagnostic testers opt for proprietary formats.\n\nCompression sizes vary, but here are some typical values:\n\n| Raw ODX | PDX    | MDD    |\n|---------|--------|--------|\n| 5.7 MB  | 1.4 MB | 111 kB |\n| 41 MB   | 2.7 MB | 470 kB |\n| 132 MB  | 5 MB   | 1.5 MB |\n\n## Converter 🛠️\n\n### Notes \n- __This software is in early development, the output format may change in incompatible ways, until the first release (1.0.0)__\n- __Due to copyright, we can't provide the required odx-schema at the moment. You'll have to provide it yourself.__   \n Please read the schema [NOTICE](converter/src/main/resources/schema/NOTICE.md).\n\n### Usage 📜\n\n\n#### After building from source\n\n```shell\njava -jar converter/build/libs/converter-all.jar --help\n```\n\nOutput:\n```\nUsage: converter [\u003coptions\u003e] [\u003cpdx-files\u003e]...\n\nOptions:\n  -O, --output-directory=\u003cpath\u003e  output directory for files (default: same as pdx-file)\n  -L, --lenient\n  --include-job-files            Include job files \u0026 libraries referenced in single ecu jobs\n  --partial-job-files=\u003ctext\u003e...  Include job files partially, and spread the contents as individual chunks. Argument can be repeated, and are in the format: \u003cregex for job-file-name pattern\u003e \u003cregex for content file-name pattern\u003e.\n  -h, --help                     Show this message and exit\n\nArguments:\n  \u003cpdx-files\u003e  pdx files to convert\n```\n\n### Building 🏗️\n\n**Prerequisites**:\n- Installed JDK 21 — we recommend [Eclipse Temurin Java JDK 21](https://adoptium.net/temurin/releases?version=21\u0026os=any\u0026arch=any)\n\nProvide ODX schema:\nPlace the files odx_2_2_0.xsd and odx-xhtml.xsd in converter/src/main/resources/schema/\n\nExecute Gradle:\n```shell\n./gradlew clean build shadowJar\n```\nThis will create `converter/build/libs/converter-all.jar`, which can be run using the `java` executable.\n\nExample:\n```shell\njava -jar converter/build/libs/converter-all.jar ECU.pdx GATEWAY.pdx \n```\n\nThis will convert the given pdx files into mdd. \n\n# development\n\n## File Format 📂\n\nThe MDD format itself is a container format defined using a [protobuf file](database/src/main/proto/file_format.proto), \nensuring compatibility across various programming languages. It includes metadata like versioning and a \ncollection of chunks. Each chunk is a byte stream with chunk-specific metadata, including optional encryption, \nsignatures, compression algorithms, and vendor-specific metadata in a key-value map.\n\nFor the diagnostic description, a compressed chunk within that container format is used, whose contents are defined using a\n[flatbuffers schema](database/src/main/fbs/diagnostic_description.fbs), to reduce the memory footprint and access times\nat runtime.\n\n## flatbuffers\n\nTo regenerate the flatbuffers schema, the flatbuffers compiler in the version [25.9.23](https://github.com/google/flatbuffers/releases/tag/v25.9.23) is required. Please install it according to the instructions in\nthe flatbuffers documentation, then you can run the gradle `generateFbs` task.\n\nPlease note, that changing the flatbuffers version will make resulting\nmdd files incompatible with other flatbuffers versions, which will \ncause issues when it isn't updated in the CDA as well.\n\n### Limitations/Changes Compared to ODX 🚧\n\n- Data types (e.g., END-OF-PDU, LEADING-LENGTH-FIELD, STRUCTURE, MUX, DTC, etc.) are combined into a single message with \n  a type and fields for the different data types, and composition is used instead of inheritance.\n- No support for cross-file references outside the pdx and runtime resolution\n\n### Language 💻\n\nThe converter is built in Kotlin, chosen for its mature XML tooling through the Java ecosystem. Kotlin's features like garbage collection, object generation through XML schema, extension functions and extended streams api enabled efficient development. Plus, it's a favorite of the author!\n\n### Contributors ✨\nSee [CONTRIBUTORS](CONTRIBUTORS)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-opensovd%2Fodx-converter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-opensovd%2Fodx-converter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-opensovd%2Fodx-converter/lists"}