Adding instruction to use the binding.
authorRomain Forlot <romain.forlot@iot.bzh>
Mon, 13 Mar 2017 11:55:31 +0000 (12:55 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 16 Mar 2017 16:14:37 +0000 (17:14 +0100)
Miss an example with an UI or CLI interface.

Change-Id: Ib26fe53f16fbdeb79f79fee15fce20ce3342d210
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
README.md

index ee33a7e..554b453 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,12 +1,90 @@
 # Low level CAN signaling binder
 
-Low level CAN bus binder. Based upon OpenXC vi-firmware project.
+Low level CAN bus binder. Based upon OpenXC vi-firmware project. Purpose of this project is to offer a low level binding to an AGL platform, idea remains the same than the vi-firmware project. It's meant to generate from a JSON file describing CAN messages and diagnostic message (OBD2 for now) present in a car, a cpp file to integrate with the project and compile all together. Result will be a widget file to install on an AGL target system.
+
+# Prerequirements
+
+- Make sure you already have set up the AGL SDK before using the following [guide][SDK_instructions].
+
+- This repo make use of git submodule, make sure to execute the following commands from the repository once cloned :
+
+```bash
+$ git submodule init
+$ git submodule update
+```
+
+- Make sure you have installed the AGL generator else you aren't able to generate custom low-level CAN binding. Generator can be found [here][generator] with the attached instruction to install and run it. It will produce a *configuration-generated.cpp* file to paste in the source, *src/*, directory.
 
 # Getting started
 
-This repo make use of git submodule, make sure to execute the following commands :
+## Compile and install the binding
 
-    ~/CAN_Signaling$ git submodule init
-    ~/CAN_Signaling$ git submodule update
+AGL SDK environment correctly set, if you have an AGL target already running in your network, I encourage you to set the TARGET variable in the root CMakeLists.txt file. Then you can directly install the binding and source directory on your target system.
 
-# Prerequirements
+Execute commands to get your binding compile :
+
+```bash
+$ mkdir build
+$ cd build
+$ cmake ..
+$ make
+```
+
+And if you have set TARGET variable, you can install it on your AGL system :
+
+```bash
+$ make install
+```
+
+If not, you will have to install it manually copying the *low-can-binding.wgt* file on your target, then from it execute the following commands :
+
+```bash
+~# afm-util install low-can-binding.wgt
+{ "added": "low-can-binding@0.1" } 
+```
+
+## Confiure system and binding
+
+Configure the binding specifying in the JSON configuration file the CAN device that the binding will to connect to. Edit file */var/lib/afm/applications/low-can-binding/0.1/can_buses.json* and change the CAN device name to the one you have :
+
+```json
+{
+       "canbus":  "vcan0"
+}
+```
+
+If you have several CAN bus devices then use an array:
+
+```json
+{
+       "canbus": [ "vcan0", "can0" ]
+}
+```
+
+Connected to the target load the virtual CAN device driver and set up a new vcan device :
+
+```bash
+ ~# modprobe vcan
+ ~# ip link add vcan0 type vcan
+ ~# ip link set vcan0 up
+ ```
+
+Or a real CAN bus device if on is present on your board (this instruction assuming a speed of 500000kbps for your device):
+
+```bash
+~# modprobe can
+~# ip link set can0 up type can bitrate 500000
+```
+## Run it, test it, use it !
+
+You can run the binding using **afm-util** tool, it is the classic way to go :
+
+```bash
+~# afm-util run low-can-binding@0.1
+1
+```
+You can find instructions to use afm-util tool [here][afm-util], as well as documentation about Application Framework.
+
+[SDK_instructions]: http://docs.iot.bzh/docs/getting_started/en/dev/reference/setup-sdk-environment.html "Setup SDK environment"
+[generator]: http://github.com/user/generator "AGL low level CAN binding Generator"
+[afm-util]: http://docs.iot.bzh/docs/apis_services/en/dev/reference/af-main/afm-daemons.html#using-afm-util "afm-util usage"
\ No newline at end of file