8e8d649d6db14c93067995206cc88d127835dc15
[contrib/mraa.git] / README.md
1 MAA - Low Level Skeleton Library for Communication on Intel platforms
2 ==============
3
4 Library in C/C++ to interface with Galileo & other Intel platforms over:
5
6 - I2C
7 - SPI
8 - GPIO
9 - PWM
10 - AIO
11
12 In a structured and sane API with port nanmes/numbering that match boards &
13 with bindings to javascript & python.
14
15 The intent is to make it easier for developers and sensor manufacturers to map
16 their sensors & actuators on top of supported hardware and to allow control of
17 low level communication protocol by high level languages & constructs.
18
19 ### ENV RECOMENDATIONS
20
21 All of these are 'optional', however they are recommended. Only a C compiler,
22 cmake and default system libraries are technically required to compile.
23
24 1. node.js 0.10.26
25 2. python 3.3.x or 2.7.x
26 3. swig 3.0.1 (swig 2.x will work but you will not be able to build node.js
27 module so comment out add_directories(javacsript) in src/CmakeLists.txt)
28 4. doxygen (needed to generate even python doc)
29 5. sphinx
30 6. pygments
31 7. pydoc
32
33 ## COMPILING
34
35 NOTE: The **only** supported cmake build configuration is to have the build/ dir
36 inside of the repo/tarball.
37
38 *if swig-v8 is not in your default path you can try run cmake with
39 "-DCMAKE_PREFIX_PATH="/path/to/swig-v8"*
40
41 mkdir build/
42 cmake ..
43 make
44
45 ## DEVELOPMENT
46
47 Please fork the code on github and then send pull requests. Please avoid merges
48 in your forks. I will also accept patches sent in git style with signoffs to
49 brendan.le.foll@intel.com
50
51 ## USING
52
53 see examples/
54
55 *for node.js make sure that maajs.node is in the current dir and set export
56 NODE_PATH=.*
57
58 Simple python html documentation can be generated with **make pydoc**, this
59 does not require the full doxygen/sphinx setup.
60
61 ## API Changelog
62
63 When the API breaks in a small way there will be a changelog listed here
64
65 **0.2.5**
66   * C++/Python/Node Enums/const names now do not contain MAA_GPIO
67   * Enum type declaration for C++ changed
68   * Python/Node get_version() -> GetVersion()
69   * i2c read calls don't use const char* and i2c write calls do
70
71 **0.2.4**
72   * All maa_ contexts now are pointers to the actual struct which is not
73     delcared in the header. The only end user change is that instead of
74     returning a type maa_gpio_context pointer maa_gpio_init() now returns a
75     maa_gpio_context (which is actually a pointer to struct _gpio internally).
76   * C++ API is available, use the .hpp headers and add stdc++  to the linker
77     flags.
78   * Initial SPI implementation is provided
79
80 **0.2.3**
81   * maa_aio_read_u16() -> maa_aio_read()
82   * maa_aio_read() now returns a uint16_t instead of an unsigned int
83
84 **0.2.2**
85   * First version with API considered 'stable'