d57a3187d7d60ef73e56e07646a746a9b25b2e01
[apps/agl-service-can-low-level.git] / README.md
1 # CAN Configuration Generator\r
2 \r
3 ## Abstract\r
4 \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
9 \r
10 ## Getting started\r
11 ### Build requirements\r
12 \r
13 * CMake version 3.0 or later\r
14 * G++, Clang++ or any C++11 complient compiler.\r
15 * Boost\r
16     * filesystem\r
17     * program_options\r
18     * system\r
19 \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
21 \r
22         devel@bsp-devkit:~/$ sudo apt-get install cmake libboost-system-dev libboost-filesystem-dev libboost-program-options-dev\r
23 \r
24 You may want to install `libboost-all-dev` to get all boost components even if it's not required.\r
25 \r
26 ## Compile\r
27 \r
28 <pre>\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
36         \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
52 --   program_options\r
53 --   filesystem\r
54 --   system\r
55 -- Configuring done\r
56 -- Generating done\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
70 </pre>\r
71 \r
72 ## Generate your config file\r
73 \r
74 To generate your config file you just have to run the generator using the `-m` option to specify your JSON file.\r
75 <pre>\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
77 </pre>\r
78 \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
83 \r
84 ## Supported OpenXC items\r
85 \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
89 \r
90 ## Known issues\r
91 \r
92 * Each `diagnostic_message` must define the same `bus` as the binding will use only one bus.\r
93 \r
94 ## Dependencies\r
95 \r
96 * [json](https://github.com/nlohmann/json) by nlohmann\r
97 \r
98 ## License\r
99 \r
100 Copyright 2017 - iotbzh\r
101 \r
102 Licensed under the [Apache License 2.0](https://github.com/iotbzh/can-config-generator/blob/master/LICENSE)\r