-# OpenXC Message Format Specification
+# CAN signaling binder
-This specification is a part of the [OpenXC platform][OpenXC].
+CAN bus binder, based upon OpenXC vi-firmware project.
-An OpenXC vehicle interface sends generic vehicle data over one or more output
-interfaces (e.g. USB or Bluetooth) as JSON objects, separated by newlines.
+There are 2 separated projects here, one with the CAN-binder that is installed
+on an AGL target and the CAN config generator used to generate a source file for
+the low level binding.
-There are two valid message types - single valued and evented.
+Full document can be found under `docs` directory.
-There may not be a 1:1 relationship between input and output signals - i.e. raw
-engine timing CAN signals may be summarized in an "engine performance" metric on
-the abstract side of the interface.
+# Fast build procedure
-## Single Valued
+Just use build.sh script:
-The expected format of a single valued message is:
+```bash
+./build.sh
+```
- {"name": "steering_wheel_angle", "value": 45}
+This will build both projects under build directory for each of them with default configuration.
-## Evented
+# Generate documentation
-The expected format of an event message is:
+## Prerequisites
- {"name": "button_event", "value": "up", "event": "pressed"}
+You can use gitbook to serve documentation. To do so, please install it using *npm* as well as *calibre* package from your package distribution manager:
-This format is good for something like a button event, where there are two
-discrete pieces of information in the measurement.
+```bash
+sudo npm install -g gitbook-cli
+sudo apt-get install calibre
+```
-## Official Signals
+To generate Doxygen documentation, you'll need doxygen and graphviz:
-These signal names are a part of the OpenXC specification, although some
-manufacturers may support custom message names.
+```bash
+sudo apt-get install doxygen graphviz
+```
-* steering_wheel_angle
- * numerical, degrees
-* torque_at_transmission
- * numerical, Nm
-* engine_speed
- * numerical, RPM
-* vehicle_speed, numerical, Kph
-* accelerator_pedal_position
- * percentage
-* parking_brake_status
- * boolean, (true == brake engaged)
-* brake_pedal_status
- * boolean (True == pedal pressed)
-* transmission_gear_position
- * states: first, second, third, fourth, fifth, sixth, seventh, eighth,
- reverse, neutral
-* gear_lever_position
- * states: neutral, park, reverse, drive, sport, low, first, second, third,
- fourth, fifth, sixth
-* odometer
- * Numerical, km
-* ignition_status
- * states: off, accessory, run, start
-* fuel_level
- * percentage
-* fuel_consumed_since_restart
- * numerical, liters (goes to 0 every time the
- vehicle interfaces power cycles)
-* door_status
- * Value is State: driver, passenger, rear_left, rear_right.
- * Event is boolean: true == ajar
-* headlamp_status
- * boolean, true is on
-* high_beam_status
- * boolean, true is on
-* windshield_wiper_status
- * boolean, true is on
-* latitude
- * numerical
-* longitude
- * numerical
+Prepare your build environment:
-## Raw CAN Message format
+```bash
+mkdir build && cd build
+cmake ..
+```
-An OpenXC vehicle interface may also output raw CAN messages. Each CAN message
-is sent as a JSON object, separated by newlines. The format of each object is:
+## Generation
- {"bus": 1, "id": 1234, "value": "0x12345678"}
+Generate a PDF version :
-**bus** - the numerical identifier of the CAN bus where this message originated,
- most likely 1 or 2 (for a vehicle interface with 2 CAN controllers).
+```bash
+gendocs.sh pdf
+```
-**id** - the CAN message ID
+Serve an HTML version, this will run a web server that will serve you locally documentation :
-**data** - up to 8 bytes of data from the CAN message's payload, represented as
- a hexidecimal number in a string. Many JSON parser cannot handle 64-bit
- integers, which is why we are not using a numerical data type.
+```bash
+gendocs.sh serve
+```
-License
-=======
+Generate doxygen documentation:
-Copyright (c) 2012-2013 Ford Motor Company
-
-Licensed under the BSD license.
-
-[OpenXC]: http://openxcplatform.com
+```bash
+gendocs.sh doxygen
+```
+or
+```bash
+cd build && make doxygen
+```