Data format for data dictionaries and CAN traces

Since we’re trying to exchange data about CAN data dictionaries (which messages are available in which cars and how to decode messages into useful signals) and CAN traces (list of timestamped messages from a specific car), @alanm and I thought it would be great to all use the same data formats.

Here’s our proposal for a data format for CAN data dictionaries and CAN traces based on JSON. Feel free to open GitHub pull requests to contribute improvements!

2 Likes

The Vector .dbc file format is a proprietary format used for their CAN tools. A number of other CAN tool vendors also use it. Vector offers a library to read/write the format. Btw, Kvaser has a free editor for download.

I’d much rather work in a saner format like JSON or XML. CANard uses JSON. Kayak has it’s own format. Busmaster (Bosch/ETAS) is free and uses it’s own format. There is a GitHub project called canmatrix that converts between the different formats.

Has Carloop settled on a format yet? I would go with JSON as we can find lots of open source software to support it.

Since this is an open source project we are open to suggestions. @nprobert, we agree JSON would be easiest and that is the format we’d like to use as well. Here is the first CAN data dictionary on the repo: data-dictionaries/chevy_volt_2013.json at master · carloop/data-dictionaries · GitHub

It’s just a start, and hopefully we can continue adding JSON files for other makes and models.

Since DBC is proprietary as you mention I agree too that using JSON would be best. Thanks for sharing these other open source projects.

I looked at the CANard format and it’s almost the same as what I put together. I’ll to just update our format to be compatible.

Really great idea. Have been looking into similar ideas for this too. Might be useful to throw together some rough implementation code to show how this would be used for decoding some messages, i think this would encourage people to use a data dictionary instead of just rolling their own hard-coded versions. It would be nice to also have this for the carloop firmware, but also for server side as i like the idea of keeping the data as raw as possible to keep the bandwidth cost down and sorting it out server side.

That’s a good idea for sure. I added that to the Carloop library GitHub so we can discuss the implementation.