A DBC file compiler that converts CAN database files into C code for message serialization, plus CSV, JSON, and XML outputs.
dbcc is a DBC file compiler that converts CAN database files into C code for serializing and deserializing CAN messages. It solves the problem of manually interpreting DBC files by automatically generating structured code to handle message packing, unpacking, encoding, and decoding.
Embedded systems engineers and automotive software developers working with CAN bus protocols who need to integrate DBC files into their C-based projects.
Developers choose dbcc for its simplicity, portability, and multi-format output—generating dependency-free C code alongside CSV, JSON, and XML files without requiring external libraries or complex toolchains.
CAN DBC to C (and CSV, JSON and XML) compiler using the mpc parser combinator library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Generates dependency-free C code that runs on Windows and Linux with no external libraries, ideal for embedded systems integration as emphasized in the 'Platform Agnostic' section.
Converts DBC files to CSV, JSON, and XML, enabling easy data analysis and tool interoperability, as highlighted in the 'Multi-Format Output' features.
Offers versioned output via the -n option to access previous behavior, helping maintain compatibility with existing codebases, per the 'Versioned Output' notes.
Uses the mpc parser combinator library for accurate DBC file parsing, reducing errors in conversion as mentioned in the 'Parser Combinator' feature.
Admits to not handling many DBC format aspects like special values, timeouts, and error frames, limiting functionality for complex automotive use cases.
The README warns that output code is not stable and may change between commits, requiring users to lock versions or risk breaking changes.
Generated code does not meet MISRA-C standards, making it unsuitable for safety-critical applications without significant manual modifications.
Relies on IEEE-754 floating-point representation without fallbacks, which could fail on non-compliant platforms, as noted in the 'Bugs / To Do' section.