1 # CAN Configuration Generator
\r
5 This tool is used to generate a configuration source file for the [Low Level CAN bus binding](https://github.com/iotbzh/CAN_signaling).
\r
6 This binding needs a configuration provided as a C++ source file.
\r
7 As long this binding is based on [OpenXC vi-firmware](https://github.com/openxc/vi-firmware), this generator use the JSON format from the [python generator](https://github.com/openxc/openxc-python).
\r
8 The reference documentation of the JSON file can be found [here](https://github.com/openxc/vi-firmware/blob/master/docs/config/reference.rst).
\r
11 ### Build requirements
\r
13 * CMake version 3.0 or later
\r
14 * G++, Clang++ or any C++11 complient compiler.
\r
20 You can install any of these using your package manager. For instance, inside the iotbzh's docker image, you must enter this command :
\r
22 devel@bsp-devkit:~/$ sudo apt-get install cmake libboost-system-dev libboost-filesystem-dev libboost-program-options-dev
\r
24 You may want to install `libboost-all-dev` to get all boost components even if it's not required.
\r
29 <b>devel@bsp-devkit:~/projects/$</b> git clone https://github.com/iotbzh/can-config-generator.git
\r
30 Cloning into 'can-config-generator'...
\r
31 remote: Counting objects: 74, done.
\r
32 remote: Compressing objects: 100% (42/42), done.
\r
33 remote: Total 74 (delta 30), reused 67 (delta 27), pack-reused 0
\r
34 Unpacking objects: 100% (74/74), done.
\r
35 Checking connectivity... done.
\r
37 <b>devel@bsp-devkit:~/projects/$</b> cd can-config-generator
\r
38 <b>devel@bsp-devkit:~/projects/can-config-generator/(master)$</b> mkdir build
\r
39 <b>devel@bsp-devkit:~/projects/can-config-generator/build(master)$</b> cmake -G "Unix Makefiles" ..
\r
40 -- The C compiler identification is GNU 4.9.2
\r
41 -- The CXX compiler identification is GNU 4.9.2
\r
42 -- Check for working C compiler: /usr/bin/cc
\r
43 -- Check for working C compiler: /usr/bin/cc -- works
\r
44 -- Detecting C compiler ABI info
\r
45 -- Detecting C compiler ABI info - done
\r
46 -- Check for working CXX compiler: /usr/bin/c++
\r
47 -- Check for working CXX compiler: /usr/bin/c++ -- works
\r
48 -- Detecting CXX compiler ABI info
\r
49 -- Detecting CXX compiler ABI info - done
\r
50 -- Boost version: 1.55.0
\r
51 -- Found the following Boost libraries:
\r
57 -- Build files have been written to: /home/devel/projects/can-config-generator/build
\r
58 <b>devel@bsp-devkit:~/projects/can-config-generator/build(master)$</b> make
\r
59 Scanning dependencies of target can-config-generator
\r
60 [ 12%] Building CXX object CMakeFiles/can-config-generator.dir/src/main.cpp.o
\r
61 [ 25%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/message_set.cpp.o
\r
62 [ 37%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/can_bus.cpp.o
\r
63 [ 50%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/can_message.cpp.o
\r
64 [ 62%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/command.cpp.o
\r
65 [ 75%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/diagnostic_message.cpp.o
\r
66 [ 87%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/mapping.cpp.o
\r
67 [100%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/signal.cpp.o
\r
68 Linking CXX executable can-config-generator
\r
69 [100%] Built target can-config-generator
\r
72 ## Generate your config file
\r
74 To generate your config file you just have to run the generator using the `-m` option to specify your JSON file.
\r
76 <b>devel@bsp-devkit:~/projects/can-config-generator/build(master)$</b> can-config-generator -m ../tests/basic.json -o configuration-generated.cpp
\r
79 If you omit the `-o` option, then code is generated on the stdout.
\r
80 You also can specify a header and a footer file.
\r
81 These files must be valid C++ fragment as long as they will be inserted as is.
\r
82 Use the `-h` option to display help.
\r
84 ## Supported OpenXC items
\r
86 As long as the low level CAN signaling binding doesn't fully support OpenXC yet, this generator is also limited.
\r
87 For instance, `initializers`, `loopers`, `buses`, `commands` and `handlers` nodes are ignored for now.
\r
88 This generator will follow OpenXC support status of the low level CAN signaling binding.
\r
92 * Each `diagnostic_message` must define the same `bus` as the binding will use only one bus.
\r
96 * [json](https://github.com/nlohmann/json) by nlohmann
\r
100 Copyright 2017 - iotbzh
\r
102 Licensed under the [Apache License 2.0](https://github.com/iotbzh/can-config-generator/blob/master/LICENSE)
\r