It will produce a _configuration-generated.cpp_ file to paste in the source, _src/_, directory.
-* Make sure you already set up the AGL SDK using the following [guide](http://docs.iot.bzh/docs/getting_started/en/dev/reference/setup-sdk-environment.html).
+* Make sure you already set up the AGL SDK using the following [SDK Quick Setup Guide](http://docs.iot.bzh/docs/getting_started/en/dev/reference/setup-sdk-environment.html). Alternatively, please refer to official guides available on [AGL Developer Site](http://docs.automotivelinux.org/docs/devguides/en/dev/#guides).
To get the correct SDK version installed, you **must** prepare your environment with the **chinook-next** version. To do so, run the following command in your docker image in the step 4 in place of `... [ prepare build environment ] ...`:
* An [USB CAN adapter](http://shop.8devices.com/usb2can) connected to connector through the [right cable](http://www.mouser.fr/ProductDetail/EasySync/OBD-M-DB9-F-ES/)).
+<!-- pagebreak -->
+
# Getting started
## Use of CAN config generator
### Build requirements
* CMake version 3.0 or later
-* G++, Clang++ or any C++11 complient compiler.
+* G++, Clang++ or any C++11 compliant compiler.
* Boost
* filesystem
* program\_options
> **NOTE** It's recommended that you follow this naming convention to named your CAN signals.
>
-> There is only character `*` that is forbidden in names because it's used as wildcard for subscription and unsubscrition.
+> There is only character `*` that is forbidden in names because it's used as wildcard for subscription and unsubscription.
>
> This described in the below chapter.
+### Available decoder
+
+You can use some basic decoder provided by default by the binding which are:
+
+* decoder_t::noopDecoder : Default decoder if not specified, return raw value from signal's bitfield.
+* decoder_t::booleanDecoder : Coerces a numerical value to a boolean.
+* decoder_t::stateDecoder : Find and return the corresponding string state for a CAN signal's raw integer value.
+
### Generating JSON from Vector CANoe Database
-> **CAUTION** This chapter has not been tested since we haven't necessary automotive tools for that.
+> **CAUTION** This chapter has not been tested since we haven't necessary automotive tools for that.
If you use CANoe to store your `gold standard` CAN signal definitions, you may be able to use the OpenXC `xml_to_json.py` script to make your JSON for you. First, export the Canoe .dbc file as XML - you can do this with Vector CANdb++. Next, create a JSON file according to the format defined above, but only define:
$ ./can-config-generator -m ../tests/basic.json -o configuration-generated.cpp
```
-If you omit the `-o` option, then code is generated on the stdout.
-You also can specify a header and a footer file.
-These files must be valid C++ fragment as long as they will be inserted as is.
+If you omit the `-o` option, then code is generated on the stdout.
+You also can specify a header and a footer file.
+These files must be valid C++ fragment as long as they will be inserted as is.
Use the `-h` option to display help.
> **CAUTION:** Each `diagnostic_message` must define the same `bus` as the binding will use only one bus.
### Supported OpenXC items
-About now, compliance with OpenXC reference is in progress, can-config-generator and CAN\_signaling will implement them soon.
+About now, compliance with OpenXC reference is in progress, can-config-generator and CAN\_signaling will implement them soon.
`initializers`, `loopers`, `commands` and `handlers` nodes are ignored for now.
This generator will follow OpenXC support status of the low level CAN signaling binding.
```bash
$ cd $WD
-$ git clone https://github.com/iotbzh/CAN_signaling
+$ git clone https://github.com/iotbzh/CAN_signaling -b v1.0
$ cd CAN_signaling
$ git submodule init
$ git submodule update
If it is the first time that you make the installation then you'll have this message in place of _**true**_.
-### Installation manually
+### Manual Installation
To install it manually, you need to copy the _low-can-binding.wgt_ file on your target, then from it execute the following commands :