# nberlette/canbus architecture

> Architecture diagram of the GitHub repository nberlette/canbus, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nberlette/canbus
- Repository: https://github.com/nberlette/canbus

## Overview

This repository is a reference collection, not a CAN-processing application: it documents the DBC format and provides example vehicle and universal DBC dictionaries. The documented user-to-result workflow is that a listener uses a relevant dictionary to interpret raw CAN signal values as human-readable values and units. The README also describes the format’s message, signal, unit, attribute, comment, and value constructs. No source excerpts were provided, so relationships below rely only on README statements; the wiki contents were not inspected.

Main entry points: [`readme.md`](https://github.com/nberlette/canbus/blob/main/readme.md) (Dataset catalog), [`dbc/bmw-e90.dbc`](https://github.com/nberlette/canbus/blob/main/dbc/bmw-e90.dbc) (BMW E90), [`dbc/bmw-e39.dbc`](https://github.com/nberlette/canbus/blob/main/dbc/bmw-e39.dbc) (BMW E39), [`dbc/OBD2.dbc`](https://github.com/nberlette/canbus/blob/main/dbc/OBD2.dbc) (OBD2 universal)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_reference["DBC reference"]
  node_format["DBC specification"]
  node_catalog["Dataset catalog<br/>[readme.md]"]
end

subgraph group_dictionaries["DBC dictionaries"]
  node_bmw_e90["BMW E90<br/>[bmw-e90.dbc]"]
  node_bmw_e39["BMW E39<br/>[bmw-e39.dbc]"]
  node_obd2["OBD2 universal<br/>[OBD2.dbc]"]
  node_j1939["J1939 universal<br/>[j1939.dbc]"]
  node_template["DBC template<br/>[boilerplate.dbc]"]
end

node_listener(("CAN listener"))

node_listener -->|"interprets with"| node_bmw_e90
node_listener -->|"interprets with"| node_bmw_e39
node_listener -->|"interprets with"| node_obd2
node_listener -->|"interprets with"| node_j1939
node_catalog -->|"lists"| node_bmw_e90
node_catalog -->|"lists"| node_bmw_e39
node_catalog -->|"lists"| node_obd2
node_catalog -->|"lists"| node_j1939
node_catalog -->|"references"| node_template
node_catalog -->|"documents"| node_format

click node_format "https://github.com/nberlette/canbus/tree/main/wiki"
click node_catalog "https://github.com/nberlette/canbus/blob/main/readme.md"
click node_bmw_e90 "https://github.com/nberlette/canbus/blob/main/dbc/bmw-e90.dbc"
click node_bmw_e39 "https://github.com/nberlette/canbus/blob/main/dbc/bmw-e39.dbc"
click node_obd2 "https://github.com/nberlette/canbus/blob/main/dbc/OBD2.dbc"
click node_j1939 "https://github.com/nberlette/canbus/blob/main/dbc/j1939.dbc"
click node_template "https://github.com/nberlette/canbus/blob/main/dbc/boilerplate.dbc"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_format,node_catalog toneBlue
class node_bmw_e90,node_bmw_e39,node_obd2,node_j1939,node_template toneAmber
class node_listener toneIndigo
```

## Components

### DBC reference

- [DBC specification](https://github.com/nberlette/canbus/tree/main/wiki): `wiki`
- [Dataset catalog](https://github.com/nberlette/canbus/blob/main/readme.md): `readme.md`

### DBC dictionaries

- [BMW E90](https://github.com/nberlette/canbus/blob/main/dbc/bmw-e90.dbc): `dbc/bmw-e90.dbc`
- [BMW E39](https://github.com/nberlette/canbus/blob/main/dbc/bmw-e39.dbc): `dbc/bmw-e39.dbc`
- [OBD2 universal](https://github.com/nberlette/canbus/blob/main/dbc/OBD2.dbc): `dbc/OBD2.dbc`
- [J1939 universal](https://github.com/nberlette/canbus/blob/main/dbc/j1939.dbc): `dbc/j1939.dbc`
- [DBC template](https://github.com/nberlette/canbus/blob/main/dbc/boilerplate.dbc): `dbc/boilerplate.dbc`

### Other components

- **CAN listener**

## Connections

- CAN listener → BMW E90: interprets with (evidence: `readme.md`)
- CAN listener → BMW E39: interprets with (evidence: `readme.md`)
- CAN listener → OBD2 universal: interprets with (evidence: `readme.md`)
- CAN listener → J1939 universal: interprets with (evidence: `readme.md`)
- Dataset catalog → BMW E90: lists (evidence: `readme.md`)
- Dataset catalog → BMW E39: lists (evidence: `readme.md`)
- Dataset catalog → OBD2 universal: lists (evidence: `readme.md`)
- Dataset catalog → J1939 universal: lists (evidence: `readme.md`)
- Dataset catalog → DBC template: references (evidence: `readme.md`)
- Dataset catalog → DBC specification: documents (evidence: `readme.md`)
