Make CMake file version according its usage.
[apps/agl-service-can-low-level.git] / README.md
index 9c0daaf..288bcc5 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1 +1,104 @@
-# can-config-generator
\ No newline at end of file
+# CAN Configuration Generator\r
+\r
+## Abstract\r
+\r
+This tool is used to generate a configuration source file for the [Low Level CAN bus binding](https://github.com/iotbzh/CAN_signaling).\r
+This binding needs a configuration provided as a C++ source file.\r
+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
+The reference documentation of the JSON file can be found [here](https://github.com/openxc/vi-firmware/blob/master/docs/config/reference.rst).\r
+\r
+## Getting started\r
+### Build requirements\r
+\r
+* CMake version 3.0 or later\r
+* G++, Clang++ or any C++11 complient compiler.\r
+* Boost\r
+    * filesystem\r
+    * program_options\r
+    * system\r
+\r
+You can install any of these using your package manager. For instance, inside the iotbzh's docker image, you must enter this command :\r
+\r
+       devel@bsp-devkit:~/$ sudo apt-get install cmake libboost-system-dev libboost-filesystem-dev libboost-program-options-dev\r
+\r
+You may want to install `libboost-all-dev` to get all boost components even if it's not required.\r
+\r
+## Compile\r
+\r
+<pre>\r
+<b>devel@bsp-devkit:~/projects/$</b> git clone https://github.com/iotbzh/can-config-generator.git\r
+Cloning into 'can-config-generator'...\r
+remote: Counting objects: 74, done.\r
+remote: Compressing objects: 100% (42/42), done.\r
+remote: Total 74 (delta 30), reused 67 (delta 27), pack-reused 0\r
+Unpacking objects: 100% (74/74), done.\r
+Checking connectivity... done.\r
+       \r
+<b>devel@bsp-devkit:~/projects/$</b> cd can-config-generator\r
+<b>devel@bsp-devkit:~/projects/can-config-generator/(master)$</b> mkdir build\r
+<b>devel@bsp-devkit:~/projects/can-config-generator/build(master)$</b> cmake -G "Unix Makefiles" ..\r
+-- The C compiler identification is GNU 4.9.2\r
+-- The CXX compiler identification is GNU 4.9.2\r
+-- Check for working C compiler: /usr/bin/cc\r
+-- Check for working C compiler: /usr/bin/cc -- works\r
+-- Detecting C compiler ABI info\r
+-- Detecting C compiler ABI info - done\r
+-- Check for working CXX compiler: /usr/bin/c++\r
+-- Check for working CXX compiler: /usr/bin/c++ -- works\r
+-- Detecting CXX compiler ABI info\r
+-- Detecting CXX compiler ABI info - done\r
+-- Boost version: 1.55.0\r
+-- Found the following Boost libraries:\r
+--   program_options\r
+--   filesystem\r
+--   system\r
+-- Configuring done\r
+-- Generating done\r
+-- Build files have been written to: /home/devel/projects/can-config-generator/build\r
+<b>devel@bsp-devkit:~/projects/can-config-generator/build(master)$</b> make\r
+Scanning dependencies of target can-config-generator\r
+[ 12%] Building CXX object CMakeFiles/can-config-generator.dir/src/main.cpp.o\r
+[ 25%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/message_set.cpp.o\r
+[ 37%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/can_bus.cpp.o\r
+[ 50%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/can_message.cpp.o\r
+[ 62%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/command.cpp.o\r
+[ 75%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/diagnostic_message.cpp.o\r
+[ 87%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/mapping.cpp.o\r
+[100%] Building CXX object CMakeFiles/can-config-generator.dir/src/openxc/signal.cpp.o\r
+Linking CXX executable can-config-generator\r
+[100%] Built target can-config-generator\r
+</pre>\r
+\r
+## Generate your config file\r
+\r
+To generate your config file you just have to run the generator using the `-m` option to specify your JSON file.\r
+<pre>\r
+<b>devel@bsp-devkit:~/projects/can-config-generator/build(master)$</b> can-config-generator -m ../tests/basic.json -o configuration-generated.cpp\r
+</pre>\r
+\r
+If you omit the `-o` option, then code is generated on the stdout.\r
+You also can specify a header and a footer file.\r
+These files must be valid C++ fragment as long as they will be inserted as is.\r
+Use the `-h` option to display help.\r
+\r
+## Supported OpenXC items\r
+\r
+As long as the low level CAN signaling binding doesn't fully support OpenXC yet, this generator is also limited.\r
+For instance, `initializers`, `loopers`, `commands` and `handlers` nodes are ignored for now.\r
+This generator will follow OpenXC support status of the low level CAN signaling binding.\r
+\r
+The `buses` item will not be supported by this generator because the binding use another way to declare and configure buses. Please refer to the binding's documentation.\r
+\r
+## Known issues\r
+\r
+* Each `diagnostic_message` must define the same `bus` as the binding will use only one bus.\r
+\r
+## Dependencies\r
+\r
+* [json](https://github.com/nlohmann/json) by nlohmann\r
+\r
+## License\r
+\r
+Copyright 2017 - iotbzh\r
+\r
+Licensed under the [Apache License 2.0](https://github.com/iotbzh/can-config-generator/blob/master/LICENSE)\r