Compare commits

..

325 Commits

Author SHA1 Message Date
a2698fd560 upm: v1.0.1
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-21 12:20:03 -08:00
11e14a891f ms5803: remove utf8 delta-sigma characters from comment block
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-16 10:57:21 -07:00
803f9a9838 ms5803: initial implementation; C, C++; FTI + examples
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-14 17:26:42 -07:00
7bc9ef0150 cmake: disable some other warnings seen with edison gcc 4.9.1
Also, fix possible uninitialized access in ds1808lc C++ example.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-11 10:44:43 -07:00
72e8629d72 cmake: Make sure utilities directory gets added to cmake
If directories are specified with -DMODULE_LIST=blah, it's
possible to skip adding the utilities directory which is needed
by *most* sensor library targets in UPM.  Added a check for this
when using -DMODULE_LIST.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-08 21:58:05 -08:00
cdc33ceb9f bitbake: Fix for pthreads C test w/yocto
Fixed a problem where the C/CXX compile flags were getting
overwritten.  Fixed warnings in a few sensor drivers.

This commit fixes #485

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-08 16:28:54 -08:00
54771e63c1 my9221: C implementation; C example; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-08 17:13:22 -07:00
fde727b601 Button: Adding C sources and C examples
This commit adds C sources and examples for the button sensor.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-11-08 13:38:52 -08:00
68091dcf43 werror: Don't emit -Wmisleading-indentation warnings
GCC-6 added -Wmisleading-indentation to -Wall.  Skip these for now.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-07 16:46:57 -08:00
1630ebfca4 otp538u: C implementation; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-07 13:53:43 -07:00
1aa748e3d6 docs: Removed 'Grove' from Comments
Signed-off-by: Suyash Lakhotia <suyashlakhotia@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-11-04 13:08:31 -07:00
b3991979ad examples: Changed Node.js module from jsupm_grove
Signed-off-by: Suyash Lakhotia <suyashlakhotia@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-11-04 13:08:31 -07:00
3eb3a0b825 guvas12d: C implementation; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-04 12:52:33 -06:00
9be920dbcd cxx_warnings: Misc changes to enable Werror
* CMake option to enable -Werror as default
    * Change to make sure all cxx examples have correct target name
    * Added PUBLIC CXX compiler flags to ads1x15 and ozw targets to
      work around compiler warnings
    * Renamed cmake variable for compiler warnings

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-03 16:45:32 -07:00
601d25cebc llvm: Fixed remaining warnings for llvm
This commit addresses warnings emitted from the llvm
compilers which were not encountered with gnu.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-03 14:14:37 -07:00
c900743f8d upm.i: turn off swig warnings relating to nested structs
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-03 13:54:46 -06:00
2b4e43281f Wunused-variable: fix several warnings
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-03 13:23:44 -06:00
630d12d963 mic: fix sign comparison warnings
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-03 13:23:44 -06:00
8da9f28157 gas: fix sign comparison warnings
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-03 13:23:44 -06:00
aab0c5afe2 lcm1602, st7735: Fix up some Worder warnings
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-03 12:51:07 -06:00
0589f445f0 Wreorder: fix a variety of re-ordering warnings
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-03 12:19:21 -06:00
d33e7e532e bacnetmstp: fix -Wreturn-type
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-03 12:14:26 -06:00
c63692b5fd Wreorder: Fixed a subset of reorder errors
This commit addresses warnings emitted from -Wreorder
in the C++ src.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-03 10:19:59 -07:00
2f31aede0e Wno-unknown-pragmas: Fixed all unknown pragmas
This commit addresses all warnings emitted from -Wno-unknown-pragmas
in the C++ src.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-02 22:57:38 -07:00
33471436bf Wunused-but-set-variable: Fixed all unused but set variables
This commit addresses all warnings emitted from
-Wunused-but-set-variable in the C++ src.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-02 22:45:52 -07:00
ee27485218 Wnon-virtual-dtor: Fixed all virtual functions w/o virtual destructor
This commit addresses all warnings emitted from -Wnon-virtual-dtor
in the C++ src.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-02 22:35:53 -07:00
6bc22dcee2 Wunused-variable: Fixed all unused variables in src
Additional unused variables.

This commit addresses all warnings emitted from -Wunused-variable
in the C++ src.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-02 22:29:59 -07:00
ae9b8fb13e Wsign-compare: Fixed all sign compare warnings in src
This commit addresses all warnings emitted from -Wunused-function
in the C++ src.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-02 22:27:17 -07:00
1dd5cbb445 Wunused-function: Fixed all unused functions in src
This commit addresses all warnings emitted from -Wunused-function
in the C++ src.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-02 21:55:19 -07:00
a3a1fdc81b Wunused-variable: Fixed all unused variables in src
This commit addresses all warnings emitted from -Wunused-variable
in the C++ src.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-02 21:44:27 -07:00
1f954a8cbf ppd42ns: C implementation; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-02 17:51:05 -06:00
8f6442e9c7 utilities: add new platform checks, implement new clock functions
The new clock functions provide a mechanism for measuring durations in
the ms (millisecond) or us (microsecond) range, in a platform
independant manner.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-02 17:51:05 -06:00
f2ad2c5679 upm_math.h: use new platform defines, include math.h on zephyr platforms
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-02 17:51:05 -06:00
d03de942c5 upm_platform.h: add new include for defining current platform (linux/zephyr, for now)
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-02 17:51:05 -06:00
13e2e7aeb8 upm: v1.0.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 14:37:19 -07:00
b42ef7b17d buzzer: updated Java samples mapping file with new sample name
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 14:37:02 -07:00
92349997e4 docs: added 1-Wire section to known limitations list
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 13:23:47 -07:00
3605e63840 docs: updated IDE images and links to IDZ sensor page
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 11:57:28 -07:00
8f7ff29b1f smartdrive: extended writeArray() function to use proper array length
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
4e48481a07 gfx: add BSD license on every instance of GFX and give credit to original source
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
246115fcf5 groveloudness: removed unused, left over source file
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
e092aab5ed grove: deprecated rest of grove libraries throughout documentation
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
ddc9e067d2 grove: updated API changes and deprecated old Grove classes
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
2b05efa4ba npm: label package versions with src suffix to allow binary distribution if needed
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
9105305543 npm: updated the readme used as main page for UPM modules on NPM
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
e3c5042a5a npm: added more potential sources to packages and other improvements
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
510df0fb15 npm: fixes mraa include path in binding.gyp
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
ebda525f85 npm: add target to generate tarballs with sources needed by NPM for publishing modules
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
64b4f040dc npm: start generating the collateral needed to publish sources to npm
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-31 10:13:08 -07:00
40a695a87f Update sx1276.hpp 2016-10-31 10:12:39 -06:00
82f6983f8e Update pn532.hpp 2016-10-31 10:12:39 -06:00
2bc8159230 doc: fix spelling errors
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
2016-10-31 10:12:39 -06:00
2d1ce18838 buzzer: rename c++ example from buzzer-sound to buzzer
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-31 10:10:50 -06:00
7b9fbd8738 buzzer: C implementation; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-28 16:48:53 -06:00
f623414c04 jhd1313m1: Added while loop to LCD example c/cxx
Make these just a bit more interesting - continuously change color
and keep updating the lcd.  Also, echo the write via printf.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-28 10:37:25 -07:00
c09ab37a59 mma7660: C implementation; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-27 15:13:20 -06:00
585f2eb331 cmake: Added return/clear variable to function
Made sure output_variable gets cleared for case where
target compiler is not supported.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-26 11:42:20 -07:00
e21e05a039 tests: Default ctest option to off
The UPM ctests require python which will fail cmake configure if not
available.  Defaulting to OFF for now.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-26 11:32:57 -07:00
8820fd159a gp2y0a: fix context allocation error message
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 17:21:26 -06:00
99abe95a97 lm35: fix potential reference of uninitialized memory
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 17:05:16 -06:00
bfe64789b6 lcm1602: fix potential reference of uninitialized memory
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 17:05:16 -06:00
654c3be71e jhd1313m1: fix potential reference of uninitialized memory
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 17:05:16 -06:00
370d43d1b3 gp2y0a: test for NULL alloc and clear allocated memory
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 17:05:16 -06:00
1483ab6a88 ds18b20: add additional check for no devices found
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 17:05:16 -06:00
092f84437f apa102: fix potential reference of uninitialized memory
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 17:05:16 -06:00
d9850cf0f6 nrf8001: fix potential reference of uninitialized memory
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 17:05:16 -06:00
df0a23f702 CMakeLists.txt: make sure compiler standards extensions are disabled.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-25 16:13:41 -06:00
6be7012987 Werror: Enable warnings as errors
Added C/CXX warning messages similar to MRAA (w/ -Werror).

    * Added syslog warning for missing switch cases
    * Cleaned up uint vs int usage
    * Fixed redifinition errors for C structs
    * Added virtual destructors for base classes
    * Removed redundant CMAKE_CXX_FLAGS from COMPILE_FLAGS for all three
      wrapper languages.  The CMAKE_CXX_FLAGS were showing up twice in
      the compile commands for the wrappers.
    * Added CMake WERROR option to enable/disable warnings as errors for
      all targets.
    * Disable a handful of compiler warnings for the wrapper cxx files,
      this minimizes the number of warnings from auto-generated code).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-25 13:25:32 -07:00
58dfa9d95a uln200xa: C implementation and examples
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-24 16:05:39 -06:00
7e0862cecc cmake: Fix for cmake < 3.0.0 swig python bindings.
There is a bug in the UseSWIG.cmake file for cmake < 3.0.0
where it does not use the SWIG outdir correctly.

This fix instead sets the CMAKE_CURRENT_BINARY_DIR which is used
by UseSWIG.cmake to place the wrapper file (and other collateral).

Before (w/cmake < 3):

    build/src/dfrph/pyupm_dfrphPYTHON_wrap.cxx

After:

    build/src/dfrph/python2.7/pyupm_dfrphPYTHON_wrap.cxx

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-21 16:22:50 -07:00
3cec185d91 swig python: build with CMAKE_CXX_FLAGS, not CMAKE_C_FLAGS
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-21 16:16:17 -06:00
ec36a8f519 M_PI define in upm_math.h and remove from rotary_fti.c
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-21 15:24:46 -06:00
1a7fbe37b1 bacnetmstp: C11 conformance; needs XOPEN for timezone
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-21 15:24:46 -06:00
1ae4119925 c11: enable C11 standards conformance unconditionally
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-21 15:24:46 -06:00
f101db2af1 linefinder: C implementation; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-21 14:22:54 -06:00
b5a33f6ee3 cmake: Cleanup of src CMakeLists.txt description field
Removed 'upm' string, capitalized first character, added descriptions
where necessary.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-20 16:19:59 -07:00
94cd7f185f c++11: enable c++11 compliance unconditionally.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-20 14:22:02 -06:00
dd3e5290b2 src/CMakeLists.txt: Always install .jar files in <prefix>/lib/java/
In certain cases (debian/ubuntu multi-arch machines) the jar files
were bing installed in <prefix>/lib/lib/java/.

Regardless of platform or architecture, these files need to be in
<prefix>/lib/java/ .

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-20 14:21:55 -06:00
dc48698d86 a110x: Updated description
Updated CMakeListst.txt DESCRIPTION field to better represent the library.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-19 13:12:43 -07:00
497a7dbd55 descriptions: Updated cmake DESCRIPTION field
This commit touches a subset of UPM sensors which contain C source.
Cleaned up the CMakeLists.txt DESCRIPTION field to better represent
the library.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-19 12:18:02 -07:00
8ac8be9e0a md: C implementation; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-18 17:04:50 -06:00
df5b3805c5 cmake: If git-describe failes with *-NOTFOUND, tag version dirty
There is a case where git_describe was returning 'HEAD-HASH-NOTFOUND'
which missed the STREQUAL check and VERSION was set incorrectly.

Changed the STREQUAL to a MATCH on -NOTFOUND.  In this way, any of the
-NOTFOUND returns change the version to dirty.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-17 15:29:42 -07:00
758fa32b75 .gitignore: add wildcard so all build*/ dirs are ignored
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-17 13:59:05 -06:00
770e43c627 rpr220: add C driver and examples; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-14 13:53:34 -06:00
78904ef2b8 rotaryencoder: make sure mraa contexts are NULL after context creation
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-14 12:09:05 -06:00
07d0168a96 rotaryencoder: add C driver and example; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-13 16:00:04 -06:00
6ce4b2dcca changelog: Added entries for recent python modules changes
Updated the changelog.md to reflect the recent python modules changes.
Added a vnext which can be replaced with the next UPM release version
number.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-13 10:23:17 -07:00
bf425014ab python: Added upm directory for python modules
* Grouped UPM python modules into upm directory, for example:
      /usr/local/lib/python2.7/dist-packages/upm
    * Updated UPM example import statements
    * Removed unused RPATH statements from UPM src CMakeLists.txt,
      currently build collateral contains an explicit RPATH which
      is stripped from the install collateral.
    * Converted python examples to work on both python2 AND python3
    * Added ctest for loading examples w/python3
    * Removed returns from swig macros
    * UPM python module use will change...
        Before:
            import pyupm_dfrph
        After:
            from upm import pyupm_dfrph
            or
            import upm.pyupm_dfrph
            etc...
    * This commit fixes #468

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-13 08:22:40 -07:00
8624a07b77 lm35: add C driver and example; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-12 16:37:59 -06:00
cbf94414e2 jhd1313m1/lcm1602: update doxygen headers
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-11 13:20:54 -06:00
758234f887 jhd1313m1: Add C++ wrapper
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-11 13:20:45 -06:00
643d262fef lcm1602: Add C++ wrapper
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-11 13:20:41 -06:00
0c0ad04cf9 lcm1602/jhd1313m1: use correct library names in interface files
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-07 18:55:18 -06:00
7e64848146 bacnetmstp: fix compiler warnings when building python wrappers
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-07 16:04:44 -06:00
64b142ecf3 jhd1313m1: Initial C implementation
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-07 15:42:16 -06:00
7fe6f856a1 lcm1602: Initial C implementation
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-10-07 15:42:12 -06:00
255d6139ee mlx90614: patched i2c reads from temperature registers
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-06 17:31:13 -07:00
94de822499 docs: added STMicro manufacturer and updated corresponding sensors
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-06 16:44:22 -07:00
bb1155700d docs: minor updates to C driver sensor descriptions
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-10-06 15:59:23 -07:00
c6610bdf46 tests: Switch from PYTHON_EXECUTABLE to PYTHON_DEFAULT_EXECUTABLE
The DetectPython cmake script now outputs a default python executable.
Updated other cmake scripts to use this concept.  Used default where
python2/3 will work, use explicit PYTHON2/3_EXECUTABLE where an
explicit version is needed.  Also, fail if python is required and NO
version of python was found.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-05 17:12:02 -07:00
edd8df4c50 encodings: Added check for non-8bit encodings in src tree.
This commit sanitizes source files for unicode encodings which
cause failures in downstream flows (docgen, python2 module loading,
etc...).

    * Removed explicit encodings from src files
    * Replaced 2 byte character encodings with ascii encodies:
        ± -> +/-
        ° -> deg
        “ -> "
        etc...
    * Added ctest to check src tree files for non-8bit encodings

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-05 14:39:30 -07:00
131947dc74 check_pythonload: Updated assert print.
Print out failing files in order in a python3-friendly way.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-05 11:54:21 -07:00
2f78d9f62b python_examples: Reformatted, self-checking, executable
* Moved body of each python example to main.  This allows for basic
      load module testing for CI
    * General cleanup of python modules (crlf/tabs/prints/etc)
    * Chmod'ed to 755 to allow running examples without specifying the
      python interpreter
    * Added ctest for loading python2/3 modules
    * Added jniclasscode pragma for java swig interface files.
    * Updated check_examplenames.py module to check all languages vs. a
      cxx example name
    * Added tests for checking python module and test loading
    * Added 'make test' to travis-ci run (run ctests)
    * Print a more meaningful message when not building cxx docs into
      python modules
    * Updated check_clean.py to only check java wrapper files
    * ENABLED ctests for UPM
    * Deleted using_carrays.py python example - this is covered by other
      examples

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-10-04 16:10:17 -07:00
62718daf0b python: Build both python2 and python3 modules
Updated UPM cmake to build both python2/3 modules if the necessary
python libs are available.

    * Removed BUILDPYTHON3 cmake option in favor of building both
      versions
    * Added cmake module to find both python2 and python3
    * Added macro which can be called from per-sensor cmake files
      to add dependency libraries via target_link_libraries as well
      as swig_link_libraries (for java, nodejs, and python)
    * Python2 is required for python documentation builds
    * Cleanup of python usage throughout UPM cmakelists.
    * Make find_package for Node required.  Removed check for NODE_FOUND
      (which should have been NODEJS_FOUND) in favor of REQUIRED.
    * The cxx and .py wrapper files get generated in python2/3 (instead
      of the same directory).  It appears these files are identical,
      however since the targets can be built in parallel it's safer to split
      them out.
    * Updated all cmake dependencies related to building documentation.
    * Removed unused classname from cmake files

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-30 17:01:41 -07:00
f0fa6f7b68 utilities/101: Add 1 tick offset to nanotimer
In certain cases with the Arduino 101/Zephyr, using the upm_delay*()
functions can cause hangs and/or exceptions.  Adding a single tick to
the generated offset resolves these issues.

The documentation warns that this is a good idea to ensure that a
timer does not expire early.  Adding this made the random hangs and
CPU exceptions go away.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-30 17:05:15 -06:00
4b149313e6 bmi160: remove leftover debugging
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-30 17:02:10 -06:00
0086626173 bmi160: add C driver and example. Add SPI support, other improvments.
This adds SPI support to the BMI160, as well as a C driver and a C
example.  In addition, some changes were made to more properly detect
and handle errors.

Functions supplied by the bosch_bmi160 driver source code is also
exported and made available to callers who want more than what the
basic driver support.  Bus access methods (I2C and SPI) are also now
exposed to both C and C++.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-29 15:41:18 -06:00
e7c80217c2 C examples: move mraa_init() calls out of C examples and into C drivers.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-28 17:34:42 -06:00
c3a5b8dd3c cmake: Updated pkg_check_modules usage for TPV libraries
* Moved CMAKE_MODULE_PATH append hier in top-level CMakeLists file
      so that it's before all calls to find_package.
    * Added pkg_check_modules for BACNET, MODBUS, JPEG, and OPENZWAVE
      to top-level CMakeLists file.
    * Removed pkg_check_modules from individual sensor libraries.
    * Simplified SWIG find_package call - require 3.0.5 for all SWIG
      wrappers.
    * Moved options to beginning of top-level CMakeLists.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-28 11:50:42 -07:00
dd9050e0aa dfrph: Updated to use mraa read_float
Use mraa's normalized adc read.  Updated names of struct
members accordingly.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-28 11:47:16 -07:00
eb7a3ceac7 upm-c: added doxygen tags to generate documentation for C APIs
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-26 17:28:21 -07:00
73719a6659 dfrph: Added set/get adc ref
Added missing getter/setter for the C library adc reference voltage.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-26 12:04:14 -07:00
c66247b3d3 groups.md: changed file style from code to markdown
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-23 15:08:02 -07:00
5df0fe8836 curieimu: rearranged comment blocks to subpage class under module in doc
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-23 15:08:02 -07:00
b8061943aa biss0001: add C driver and example, C++ wraps C driver
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-23 14:18:08 -06:00
22c7310428 yg1006: add C driver and example, C++ wraps C driver
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-23 12:20:05 -06:00
c9ed65f22d water: C example, fix bad error message
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-23 12:20:05 -06:00
3047049402 water: zephyr: don't use mraa_result_print, use proper includes
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-22 17:15:31 -06:00
dff782a477 water: add C driver and example. C++ wraps C driver.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-22 16:43:48 -06:00
29b11063ee dfrorp: fix error in mraa_init() check
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-22 16:43:48 -06:00
6f2c65b0d5 upm_utilities: remove unused upm_malloc/free, add comments
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-22 16:43:48 -06:00
80fb4ed6da mq303a: Header requires mraa gpio include.
Added mraa/gpio.h to mq303a.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-22 14:17:39 -07:00
177f77f1f2 dereferencing: Small fixes for deref errors.
Cleanup some dereferencing after free.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-22 14:14:46 -07:00
a57f1c9691 memory: Small changes to fix some memory leaks.
Four small leaks in *scam, sx1276, and ozw.  Added calls to
cleanup resources before throws.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-21 12:25:02 -07:00
87b10e33d0 curieimu: updated description and added Firmata connection type to groups
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-20 16:52:50 -07:00
025844fe24 doxygen: doxygen.groups changed again to groups.md due to doxygen limitations
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-19 19:21:13 -07:00
e4d470ad2c bacnetmstp: moved helper library documentation under module page
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-19 17:43:29 -07:00
e08b97ff85 doxygen: removed library to group name conflicts from new generic classes
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-19 17:25:36 -07:00
06547dcd07 server: Replaced servo.c w/servo.h in C sample header
Possible copy/paste error - example source included sensor
library source.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-19 17:11:37 -07:00
5a763ea5f5 mvs06068: Removed example file
This has be implemented in collision.c.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-19 15:50:37 -07:00
324af8fc92 examples: Cleaned up C examples.
This commit cleans up multiple items with the UPM C example source.

    * Switch from usleep and sleep to upm_delay* methods
    * Include a mraa_init and check return value prior to using sensor
    * All example mains now return
    * Added include for mraa.h and upm_utilites.h to all examples
    * Reformatted/removed tabs
    * Updated author line for the examples I wrote

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-19 15:45:22 -07:00
2ccdc3e673 sht1x: disable mmapped gpio access
This seems to cause troubles on edison, and the driver works fine
without it.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-16 17:11:28 -06:00
239ab49d6b sht1x: Initial implementation
This driver was developed with a DFRobot SHT10 Temperature and Humidity
sensor.  This driver should work on all SHT1X devices.

It requires a 10K pull-up resistor connected to the data pin.
The sensor can be run at differing voltages from 2.5v to 5v.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-16 16:52:49 -06:00
5d4fc3cbf5 Added alt tags and missing images to grove sensors
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-16 12:43:34 -07:00
14ede63192 java: Corrected typo in pom file
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-09-16 13:43:16 +01:00
b2a291ca78 Modified tag names for button and rotary
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-15 11:17:42 -07:00
b60ecdd559 java: Added automatic pom file generation
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-15 10:34:00 -07:00
353788a645 docs: renamed upm.hpp to a more appropriate doxygen.groups
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-14 16:55:30 -07:00
1e51285a06 images: Updated missing jpgs for docs.
This change makes sure all necessary grove images exist where
applicable.  Also removed executable attribute from jpgs.
led sensor points to led.jpg.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:37:42 -07:00
8bdb917c40 MD: Adding missing files
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:27 -07:00
2970d21ddd MD: Created MD from GroveMD
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:27 -07:00
b24d83aa95 Authors added for C Modules
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:26 -07:00
ac5e54cfb6 LineFinder: Created LineFinder from GroveLineFinder
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:26 -07:00
ed6d61d12e ultrasonic: Created ultrasonic from groveultrasonic.
* Added C++ and javascript example.
    * Added jpg.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:25 -07:00
62f2296642 authoring: Added author for C sensors
Updated Author: line for C src/hdrs.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:25 -07:00
b65908ea24 WFS: Added water flow sensor without grove dependency
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:24 -07:00
81e4eb07bf Fixing build errors
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:24 -07:00
ea4b1b6aa7 Grove: Reverted examples and Sources
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:23 -07:00
4d39f1ee84 SCAM: Renamed interface files from grovescam to scam
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:22 -07:00
b1918f61de SCAM: Added Serial camera without grove dependency
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:22 -07:00
a9883bd1f2 Grove: Reverting Grove sources
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:21 -07:00
67848a7a5c Fixing Build errors
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:21 -07:00
876a6ef9b1 Fixing build errors
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:20 -07:00
982065a7b7 Speaker: Removed grove dependency
* Renamed all files from grovespeaker to speaker
    * Replaced all instances of grovespeaker with speaker
    * Updated all CMake files
2016-09-14 14:09:20 -07:00
c759932ee6 Button: Fixed build errors
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:19 -07:00
6875a20eca Rotary: Added target and renamed img file
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:19 -07:00
ddab71e896 Water: Removed grove dependency
* Renamed all files from grovewater to water
    * Replaced all instances of grovewater with water
    * Updated all CMake files

Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:18 -07:00
e9b0deaf75 apa102: apa102_init(): return the created context
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:09:18 -07:00
db05211516 GPRS: Remove Grove Dependency
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:17 -07:00
f4315db035 Electromagnet: Remove Grove Dependency
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:17 -07:00
84f402abd9 EL Driver: Removing Grove Dependency
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:16 -07:00
3753a1be5c Button: Removed grove dependency
* Renamed all files from groverrotary to rotary
    * Replaced all instances of groverrotary with rotary
    * Updated all CMake files

Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:16 -07:00
6a6a572069 dfrec: Initial implementation
This module implements support for the DFRobot EC (Electrical
Conductivity) meter.  It relies on the use of the DS18B20 UPM C module
for temperature gathering.

It has a pretty complicated calibration procedure which is somewhat
documented on the DFRobot wiki.  Functions have been added to support
changing the various coefficients as desired.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:09:15 -07:00
6d437c8007 ds18b20: Add a C implementation and inprove documentation
This commit adds a C implementation for the DS18B20.  The C++
implementation was untouched (ie: it does not wrap the C
implementation).  This can be done in the future if desired.

In addition, add an ascii-schematic to both the .h and .hpp files to
better illustrate how to wire up the DS 1-wire interface for the UART.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:09:15 -07:00
5088ee99e6 examples/c/CMakeLists.txt: make sure C examples link only with C libs
Previously, C examples were being linked with the C++ libs.  This
worked, since currently (until ds18b20) all C++ libraries with C
components simply wrapped the C componenets.

Now we make sure that only the C libs are ever linked with the C
examples.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:09:14 -07:00
6ccab10bbf src/CMakeLists.txt: "export" lib C and C++ targets to the calling modules
With the switch to using a function rather than a macro, $libname is
no longer available to module CMakeLists.txt files.  These are useful
for adding dependencies (for example a module depending on another
module).

Now ${libnamec} (for C library) and ${libnamecxx} (for C++ library)
targets are made available to the module CMakeLists.txt files for
their use.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:09:14 -07:00
a08b8bbcb0 EHR: Removed Grove dependency
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:13 -07:00
f9a36314fb LED: Added C Src and Example
Changed from Grove LED to LED.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:13 -07:00
1caf805d2b Moisture: Add C Src and Example
Changed from GroveMoisture.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:12 -07:00
0f7bb5573c Collision: Added C Src and Example
This module was initially known as GroveCollision. It has been
now changed to Collision. C source and examples added.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:12 -07:00
2a63e97533 rotary_relay: Updated java examples
* Changed module from upm_grove to upm_relay/rotary.
    * Updated java examples cmake from upm_grove to upm_relay/rotary.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:11 -07:00
50ec3a018f rotary_relay: Updated java examples
Changed module from upm_grove to upm_relay/rotary.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:11 -07:00
1b9b142b2e grove: Small changes to build grove library
* Removed relay and rotary from grove library
    * Removed relay and rotary from grove SWIG interfaces
    * Fixed warning for o2 printf %
    * Fixed return value warning for _get_normalized method used by
      my analog sensors.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:10 -07:00
f2211b9578 Images: Renamed rotary and relay image names
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:10 -07:00
bded0a07d9 Rotary: Added C source
Added C source for rotary angle sensor

    * Renamed all files from groverrotary to rotary
    * Replaced all instances of groverrotary with rotary
    * Added C source for rotary angle sensor
    * Updated all CMake files

Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:09 -07:00
b266f87450 Relay: Added C source
Signed-off-by: Sisinty Sasmita Patra <sisinty.s.patra@intel.com>
2016-09-14 14:09:09 -07:00
af417d3ae1 Fixing Build errors
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:08 -07:00
e211f82f6c Loudness: Adding C source to correct directory
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:08 -07:00
3c51f638f1 A110X: Fixing Build error
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:07 -07:00
d548fc62ab Examples: Added C Examples
Added examples for:
mq303a
m24lr64e
mpr121
servo
a110x
gp2y0a
ttp223
loudness
tsl2561

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:07 -07:00
373a79fb91 AD8232: Adding C Source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:06 -07:00
cfdc8cff1d Servo: Adding C Source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:06 -07:00
980d10d1a4 M24LR64E: Add C Source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:05 -07:00
25f4cb0be1 MPR121: Added C Source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:05 -07:00
e0e93281fb Alcohol Sensor: Add C Source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:04 -07:00
f35701b9c6 Grove Collision: Add C Source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:09:04 -07:00
67d01a9393 temperature: added C sources and removed grove dependency
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-14 14:09:03 -07:00
af61f51e48 mic: added C sources for microphone sensor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-14 14:09:02 -07:00
878d89eee5 grove: Updated python/java/script tests for light and slide sensor.
Since these were split out from the grove lib, they need to load their
own library, ie Light now comes from upm_light.so.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:02 -07:00
3ab74be66b grove: Updated java/script tests for light and slide sensor.
Since these were split out from the grove lib, they need to load their
own library, ie Light now comes from upm_light.so.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:01 -07:00
e58c651b67 slide: Added slide potentiometer sensor C source
Added the C source for the flex sensor with necessary changes to cmake,
examples, and docs.

    * Renamed all files with groveslide to slide
    * Replaced all instances of groveslide with slide
    * Added C source for slide sensor
    * Updated all cmake files
    * Added C example for slide sensor
    * Split out slide sensor from grove library

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:01 -07:00
e2bec11c23 flex: Added flex sensor C source
Added the C source for the flex sensor with necessary changes to cmake,
examples, and docs.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:00 -07:00
bec533d8bd joystick12: Added 2 axis analog joystick12 C sensor
Added the C source for the joystick12 with necessary changes to cmake,
examples, and docs.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:09:00 -07:00
b781405a95 ldt0028: Added piezo vibration sensor C source
Added the C source for the light sensor with necessary changes to cmake,
examples, docs.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:59 -07:00
571f9c9498 light: Added light sensor C source
Added the C source for the light sensor with necessary changes to cmake,
examples, docs.

    * Renamed all files with grovelight to light
    * Replaced all instances of grovelight with light
    * Added C source for light sensor
    * Updated all cmake files
    * Added C example for light sensor
    * Split out light sensor from grove library

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:59 -07:00
0e52ea619b gsr: Added gsr sensor C source
Added the C source for the gsr sensor with necessary changes to cmake,
examples, docs.

    * Renamed all files with grovegsr to gsr
    * Replaced all instances of grovegsr with gsr
    * Added C source for gsr sensor
    * Updated all cmake files
    * Added C example for gsr sensor
    * Fixed C++ threshold method from throwing on a successfull aio read

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:58 -07:00
a19678948b emg: Added emg sensor C source
Added the C source for the emg sensor with necessary changes to cmake,
examples, docs.

    * Renamed all files with groveemg to emg
    * Replaced all instances of groveemg with emg
    * Added C source for emg sensor
    * Updated all cmake files
    * Added C example for emg sensor

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:58 -07:00
fe06de86b4 o2: Updated o2 sensor image name
Renamed groveo2.jpg -> o2.jpg to match sensor library name.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:57 -07:00
f9878b3fe6 o2: Added O2 sensor C source
Added the C source for the O2 sensor with necessary changes to cmake,
examples, docs.

    * Renamed all files with groveo2 to o2
    * Replaced all instances of groveo2 with o2
    * Added C source for o2 sensor
    * Updated all cmake files
    * Added C example for o2 sensor

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:57 -07:00
fe318a78d2 mqx: C gas sensors mq2-mq9
Implement a single source file for the following:

    * mq2: H2/LPG/CH4/CO/alcohol/smoke/propane/etc
    * mq3: Alcohol/benzine/CH4/hexane/LPG/CO
    * mq4: CNG (mostly methane)
    * mq5: H2/LPG/CH4/CO/alcohol
    * mq6: LPG (mostly propane/butane)
    * mq7: CO
    * mq8: H
    * mq9: CO/CH4/LPG

The documentation for these sensors notes that they do not read an exact
gas concentration.  Some of the sensors have examples for how to
calibrate with a 'clean air environment' for outputing ppm, but this is
not the case for all mqx sensors.  Because of this, the output can be
read as a normalized output (0.0->1.0), raw volts (normalized * aRef),
or a scaled/offset voltage.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:56 -07:00
ba403de6e7 fti: Small changes to get fti building for all sensors.
* Updated include dir name for gp2y0a.
    * Updated mosture.h header name for moisture sensor.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:56 -07:00
2b6dd5f3fd cmake: Cleanup of cmake messages.
* Removed unessesary spaces.
    * Changed INFO to STATUS since INFO is not a cmake message
      keyword.
    * Changed a few messages from status/info to warning.
    * Fixed trailing carriage return on yuidoc execute_process.
    * Removed my debug messages for CXX vs C.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:08:55 -07:00
09b1bb9a60 TTP223: Adding C source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:07:57 -07:00
8c4b5333d5 TSL2561: Adding C source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:07:56 -07:00
b01b52dfb8 apa102: added c version of driver, no example yet
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-14 14:07:56 -07:00
b608232cb9 vdiv: Added vdiv C source.
Multiple changes related to building the vdiv c source w/c example.

    * Renamed GroveVdiv to vdiv (all cases) throughout source, examples,
    directory names, and documentation.

    * Added C source.

    * Tested C sensor code on edison

    * Updated CMakeLists.txt for examples-c to build from
    <sensorname>-c.  This was a small change to get c examples to build
    for sensors in which the C++ does NOT wrap the C.

    * Added C example for vdiv.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:07:55 -07:00
668aa320b9 dfrph_c_example: Fixed small copy/paste error
Removed urm37 string.  Re-aligned source.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:07:55 -07:00
c0bff584d5 Loudness: Adding C components
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:07:54 -07:00
d1fccde249 Moisture Sensor: Adding C source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:07:54 -07:00
d6dd6402b9 GP2Y0A: Adding C source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:07:53 -07:00
dcb4e83251 dfrorp: Initial implementation
This module implements support for the DFRobot Analog ORP
(Oxidation/Reduction Potential) Meter.

It requires 5.0 volts, but the more accurate the voltage specified (to
the constructor), the more accurate the meter (paraphrased from the
wiki).

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:52 -07:00
2a7ca8e51d nmea_gps: Fixed differences in function signatures.
Small diff between header and source.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:07:52 -07:00
70368ecb7e crequires: Add utilites-c target for all c sensors
Switch from upmc-utilities to target name (utilities-c).

Fixes linking problem with C libraries.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:07:51 -07:00
f1bcd7bfb4 A110x: Adding C source
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-09-14 14:07:51 -07:00
21297e80d4 hka5: Initial implementation
This module implements support for the DFRobot Laser PM2.5 Sensor.  It
connects to a UART at 9600 baud.  This is the only baud rate
supported.  It optionally supports Reset and Set/Sleep gpios as well.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:50 -07:00
1b74f5335d src/CMakeLists.txt: fix an indentation 2016-09-14 14:07:50 -07:00
372b83fbed nmea_gps: remove incorrect comments in python examples
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:49 -07:00
4a8ddc10ad nmea_gps: add support for ubloc I2c reading of NMEA data
These changes allow NMEA data to be read via I2C on UBLOX compliant
devices that support this capability, such as the LEA-6H based GPS
shield from DFRobot.

It adds a new init() function to the C code, and a new constructor to
the C++ code. It also adds 5 new examples for C, C++, Javascript,
Python, and Java.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:49 -07:00
d456066277 ublox6: remove driver and replace with generic nmea_gps driver
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:48 -07:00
a040f51cda nmea_gps: renamed vk2828u7 to nmea_gps
This driver will serve as a generic module for grabbing NMEA data from
various GPS devices via a serial interface.  ublox6 will also be
removed in favor of using this driver going forward.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:48 -07:00
46460e20d9 urm37: Add C library for this sensor
Added a C implementation for this sensor.  The C++ library was changed
to just wrap the C library calls.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:47 -07:00
196654e7c6 bh1750: Initial implementation
This driver was developed with the DFRobot Light Sensor based on the
BH1750.  It has a sensitivity of .5 to 65535 Lux.  It supports
voltages from 3-5vdc and is connected via I2C.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:47 -07:00
d1aa4b62f2 mma7361: Initial implementation
This driver implements support for the DFRobot MMA7361 analog
accelerometer.  It supports 3 axes with a selectable 1.5G and 6G
sensitivity. It is not really meant for navigation, but rather for
uses such as orientation and freefall detection.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:46 -07:00
3cb80093e0 src/CMakeLists.txt: add upm utilities as a link dependency for C libs
Make sure that for all C libs, upmc-utilities is linked in.  Also, do
not do this for the utilities library itself.

In addition, do not add the utilities library as a requirement for the
libupmc-utilities pkgconfig file.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:46 -07:00
64e81def0f vk2828u7: Initial implementation
This module provides support for the VK2828U7 (ublox based) GPS module
from DFRobot.  It is connected via a UART, and emits NMEA data.

Ideally this data could be fed to an external library like TinyGPS to
parse the NMEA data and provide an easier method of extracting GPS
information.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:45 -07:00
8e9e0976bb upm_stream.h: fixup some arguments and a missing typedef
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-09-14 14:07:45 -07:00
c1f9d15f67 upmc: Updates for building C modules w/base UPM
Test commit for building C UPM modules.

    * Added C include directory
    * Added C utilities directory
    * Rename C++ upm.h -> upm.hpp to make room for C upm.h
    * Added upm_mixed_module_init function to src/CMakeLists.txt.  This
      function takes filesnames similar to upm_module_init and does a
      bit of processing before calling upm_module_init.
    * Added c example directory.  Changed c++ example names.
    * Added dfrph implemention for testing (C++ wraps C).  Added mraa
      to .pc requires for dfrph.  Tested against stand-alone project.
      Added dfrph c example.
    * Update implemention of pkg-config file generation.
    * Added two cmake cache variables: BUILDCPP and BUILDFTI
    * Removed src from swig_add_module calls, added libname to
      swig_link_libraries calls.  Shrinks swig'ed binaries by ~13%.
    * Added install target in upm/CMakeLists.txt to install C header,
      directory.  Is this where we want this?
    * C FTI header directory is include/fti

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-09-14 14:07:44 -07:00
d866b25f85 upm: v0.8.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-09-14 13:45:04 -07:00
2583d0852d examples: removed jslint, jshint and global from javascript example files
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-31 13:25:09 -07:00
2de319c254 docs: removed superfluous UPM API reference from sensor names
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-30 16:51:10 -07:00
77fbf49f93 htu21d: fixed 16-bit i2c reads and added extra functionality
Fixed 16-bit read code to use the correct mraa function to align with
the datasheet.  Added code for dew point calculation and single function
to retreive temp, humidity, and dewpoint.  Other clean up as well.

Signed-off-by: Bill Penner <william.penner@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-30 16:15:28 -07:00
372d3e980f docs: added MPL3115A2 to list of known limitations
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-30 16:01:58 -07:00
dd014c718f si7005: fixed sensor description and added example link
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-30 15:54:28 -07:00
5304192813 jhd1313m1: added backlight control functions
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-30 15:16:07 -07:00
8d524b8744 docs: updated build documentation with dependencies and added Travis build status
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-30 12:44:30 -07:00
deff852839 docs: updated list of known limitations
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-26 17:03:17 -07:00
2d2ee8d1f0 apa102: added extra functionality
Exposed call to MRAA SPI frequency for those super long strips where the clock signal will degrade and introduce glitches. Slowing down will fix it without the need for extra filtering or redrivers. Batch mode also helps since only one write per frame will be required.

Added functions that control brightness only for fade effects without the need to keep an extra copy of the pixel color map.

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-25 17:33:41 -07:00
9a83bb7530 ads1x15: changed error types to runtime errors on failed i2c ops
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-23 10:41:14 -07:00
2b642ab7a4 ssd1306: failed i2c frequency change should be non-fatal for this device
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-23 10:40:59 -07:00
bde7259ee8 mcp9808: failed i2c frequency change should be non-fatal for this device
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-23 10:40:45 -07:00
dc93fb11ff otp538u: some fixes to get working on the Arduino 101 with Firmata
There are some issues using this device on the 101 with Firmata:

1. You cannot use any other ADC resolution than 1024.  By default the
driver would try to set 12b resolution for improved accuracy.  Doing
this on the 101 yielded nonsensical readings causing the driver to
fail.  Using 10b resolution will yield less accuracy, but at least the
driver will function.

2. After the first ADC read, and for some time period after, the MRAA
aio_read() calls will always return 0.  This would cause an exception
to be thrown by the driver since this is an invalid reading.  Now, we
do an analog read on each channel and sleep for .5 seconds in the ctor
to get around this problem.  It is a hack and should be properly fixed
somewhere else (firmata?  MRAA?).

Some code was reworked/renamed to make it more clear what is actually
going on.  In addition a setDebug() method was added to enable some
debugging output.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-08-16 11:22:43 -06:00
19d1af6a48 ads1x15: failed i2c frequency change should be non-fatal for this device
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-12 11:59:47 -07:00
e689dc175c l3gd20: add l3gd20h chipid to ctor check as well
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-08-10 13:01:33 -06:00
06ecae7212 l3gd20: Add support for I2C connections
The existing driver only supported IIO.  This change adds support for
controlling the device via an I2C connection. In addition, there is a
new C++ example for it (l3gd20-i2c.cxx).

Note: Only basic functionality is supported, though a full register
map and access functions are available to fill in any desired
functionality.

Note, that some methods are only usable with specific connection
types.  See the documentation.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-08-09 16:03:42 -06:00
4faa71d239 upm: v0.7.3
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-04 17:19:04 -07:00
5265bada9c ms5611: description and some doxygen tags updated
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-04 17:12:45 -07:00
84067826eb upm.h: Added manufacturwer entry for Measurement Specialties
Signed-off-by: Henry Bruce <henry.bruce@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-04 17:12:28 -07:00
98e3621c93 ms5611: Initial implementation
Signed-off-by: Henry Bruce <henry.bruce@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-04 17:12:10 -07:00
d79799bab9 docs: updated doxygen tags for some sensors
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-04 17:11:52 -07:00
49e04593d8 build: remove unnecessary BUILDSWIG option
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-08-03 11:54:36 -06:00
bda66a3d06 grovetemp: updated conversion formula for v1.2 compatibility
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-02 10:16:46 -07:00
84a77730be examples: updated module names for some C++ examples
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-01 18:33:00 -07:00
b08fc8d48d grove: split code base for grove sensors into individual files
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-08-01 18:25:36 -07:00
e64f192fb7 apds9930: enable sensor before read out sensor data
Changes in library:
- enableProximity() function is to enable or disable proximity sensor
- enableIlluminance() function is to enable or disable illuminance sensor
- run clang-format

Changes in example:
- proximity and illuminance kernel IIO-based driver init state is power off,
  require enable before read out sensor data. Sleep time is needed after
  enable, the sleep time may vary on different platform.
- run clang-format

Signed-off-by: Lay, Kuan Loon <kuan.loon.lay@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-07-22 16:30:25 -07:00
40fe6654eb ublox6: Add most popular baud rates to GPS enums
Signed-off-by: deadprogram <ron@hybridgroup.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-07-22 15:33:05 -07:00
e740335701 travis.yml: force install of swig3.0 even if not authenticated
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-07-19 15:17:57 -07:00
b257d91702 mpr121: fixed default value for filter configuration register
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-07-19 10:08:52 -07:00
e7394217b1 mlx90614: set i2c bus speed to 100 kHz on init to match sensor specs
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-07-14 14:41:03 -07:00
baec9966f0 spelling: correct many misspellings of celsius
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-07-12 17:42:01 -06:00
0fb56356fb bmx055: fix up some issues reported by static analysis
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-07-12 16:05:22 -06:00
e0ef6eea64 ozw: fix up some issues reported by static analysis
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-07-12 16:05:13 -06:00
743730550c CMakeLists.txt: move example subdir adds after add_subdirectory(src) is called
This will ensure that all src modules are scanned first before
examples (c++/java).

In certain cases when doing parallel builds with many cores (8), the
examples for MODBUS, BACNET, and OPENZWAVE would not be built, since
their dependant libraries had not yet been located (in the src/
dir(s) via pkg_check_modules()), by the time the examples were being
compiled.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-07-06 16:49:55 -06:00
9ab9e2c403 ozw: Rework and add some device specific drivers and examples.
This commit reworks ozw somewhat and adds some device specific drivers
with examples.  All of these drivers are kept in the UPM ozw library.

The OZW class has been reworked to make it a proper singleton, since
the OpenZWave::Manager() it depends on is already a singleton.  This
avoids issues such as opening and initializing OpenZWave multiple
times.

A new, relatively thin base class, ozwInterface is also now present.
This class wraps some basic functionality, and handles initialization
of the OZW base class.  It is intended to be inherited by device
driver classes.  It operates on a node id for a device.  Each OZW
device is referenced by a node id, which does not change unless the
device is removed (and possibly re-added) to a Z-Wave network.

Finally, a series of device specific drivers have been implemented.
These provide basic functionality to monitor and in some cases control
the operation of a Z-Wave device.  They are the following:

ozwdump - This is a fake 'device' driver that initializes an OZW
network and dumps information on all of the nodes (devices) present.
Along with each node, available information on each valueid associated
with that node is also printed.  This fake device and it's examples
replace the original ozw example.

aeotecss6 - Aeotec Smart Switch 6.  This device allows control of the
switch, as well as reporting of information the switch makes
available, such as current consumption, volts, watts, and accumulated
energy use (kWh).

aeotecsdg2 - Aeotec Smart Dimmer Gen 2.  This device is similar to the
Smart Switch 6, but also provides dimming functionality.  It also
provides information on energy use.

aeotecdw2e - Aeotec Door/Window Sensor 2nd Edition.  This device is a
magnetic switch with an embedded tamper switch used to detect the
opening/closing of windows and doors.  This is a battery powered
device.

aeotecdsb09104 - Aeotec Home Energy Monitor.  This device is intended
to be installed at the MAINS or Breaker box.  It reports current and
cumulative energy consumption.

tzemt400 - Trane TZEMT400 Thermostat.  This device is a thermostat
with Z-Wave functionality.  The variant tested was the
TZEMT400BB32MAA.  The driver reports various information on the status
of the thermostat, as well as the current measured temperature.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-07-06 15:13:00 -06:00
8da6095c35 travis: Updated ppa for swig3.0
UPM requires swig 3.0.5 which *was* offered in fenics-exp, but is
no longer available there.  Switched to fenics-dev.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-07-01 10:18:01 -07:00
1849e22154 upm: v0.7.2
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-06-30 16:28:44 -07:00
dec9b2096e mraa: Updated mraa dependecy to 1.1.1
There were api changes for iio kernel support on mraa which cascade to
UPM - setting the minimum version of mraa required.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-06-30 15:15:50 -07:00
e1df8b5bf6 iio_core: Patches for IIO core kernel standard
Applying patches from Kuan Loon Lay.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-06-30 14:57:19 -07:00
634208e3dc upm: v0.7.1
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-06-28 11:37:42 -07:00
05ca452831 python: Removed exact from find_package
Failing on exact match for minor version.  Reverting back to
non-exact match.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-06-24 23:01:25 -07:00
19b0b0c2f1 python: Fixes for building python modules
Moved src include AFTER setter for PYTHONBUILD_VERSION.  In this way,
the src CMakeLists has a valid PYTHONBUILD_VERSION str.
Call find_package on PythonInterp prior to finding the libs (recommended).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-06-24 17:11:28 -07:00
9a74a3b4f5 LCD:jhd1313m1:HD44780 Setting number of rows and font size
Signed-off-by: Akira Tsukamoto <akira.tsukamoto@linaro.org>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-06-17 14:24:36 -07:00
25c0f8ebb1 LCD:jhd1313m1:HD44780 Adding workaround of errata on init
HD44780 fails to initialize unsuccessfully without the workaround.

Adding workaround based on HD77480 datasheet for initialization
and software reset.

Signed-off-by: Akira Tsukamoto <akira.tsukamoto@linaro.org>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-06-17 14:23:53 -07:00
33e2c03b48 tb7300: Initial implementation
This module implements support for the Honeywell TB7300 Communicating
Fan Coil Thermostat.  It may also support the TB7200, though only the
TB7300 was available for development of this driver.

The TB7200 Series PI thermostats are designed for zoning applications,
and the TB7300 Series PI thermostats are designed for fan coil
control. Both Series are communicating thermostats with models
available in BACnet® MS/TP protocol and can be easily integrated into
a WEBs-AX building automation system based on the NiagaraAX® platform.

TB7200 and TB7300 Series thermostats are compatible with the Honeywell
Occupancy Sensor Cover. Thermostats equipped with an occupancy sensor
cover provide advanced active occupancy logic, which will
automatically switch occupancy levels from Occupied to Stand-By and
Unoccupied as required by local activity being present or not. This
advanced occupancy functionality provides advantageous energy savings
during occupied hours without sacrificing occupant comfort. All
thermostats can be ordered with or without a factory installed PIR
cover.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-06-14 17:12:32 -06:00
3c5d498ae5 t8100: Initial implementation
This module implements support for the Amphenol Telaire Ventostat
T8100 Ventilation Controller with BACnet interface.  It may also
support the T8200 and T8300 models, but they have not been tested.

The Telaire Ventostat T8100 reports Temperature, Humidity and CO2
concentrations.  It supports an optional relay with a settable trigger
point.  The unit this driver was tested under did not support the
optional relay.  The temperature range supported is 0-50C, humidity is
0-100% non-condensing, and CO2 range is appoximately 0-2000 PPM for
the T8100.  Other sensors in this family support wider ranges.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-06-14 17:04:17 -06:00
93fea877e3 e50hx: use the new bacnetutil class
This commit removes functionality that is now present in the
bacnetutil class.  This simplifies the driver considerably.  The
examples were modified to reflect the renaming of some utility
functions in bacnetutil.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-06-14 17:00:00 -06:00
b7f038de3d bacnetmstp: add new bacnetutil class to bacnetmstp UPM library
There is some functionality that will always be needed for BACnet
drivers.  Here we create a new bacnetutil class, built as part of the
bacnetmstp library that can handle much of the data handling and setup
a BACnet driver will need.

The idea is that any BACnet functionality needed, that is not
device-specific, should be added to this class for all drivers to use.

The intent is that all BACnet drivers will inherit from this class.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-06-14 16:53:17 -06:00
f03696b7a5 bacnetmstp: Add array support and the ability to create BACnet enums
This reworks the data handling portion of bacnetmstp.  Instead of just
handling a single data element returned from a device, we can handle
more, as in the case of BACnet arrays.

Added the ability to create BACnet enum data elements.  This is needed
in order to set binary value objects.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-06-14 16:53:17 -06:00
8fb7907a4e bmx055, bmi055, bmc160, bma250e, bmg150, bmm150: Initial implementation
This module (bmx055) implements support for the following core Bosch
chipsets:

bma250e - accelerometer, 3 variants (chip id's 0x03, 0xf9, and 0xfa)
bmm150 - magnetometer
bmg160 - gyroscope

The other 3 devices are combinations of the above:

bmx055 - accel/gyro/mag
bmc160 - accel/mag
bmi055 - accel/gyro

...for 6 devices total.

For the combination devices, all of the sub-devices appear as
individual independent devices on the I2C/SPI bus.

The combination drivers provide basic configuration and data output.
For more detailed control as well as interrupt support, you should use
the core device drivers (accel/gyro/mag) directly.

These devices support both I2C and SPI communications.  They must be
powered at 3.3vdc.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-06-14 16:40:21 -06:00
66bd4ee8c8 readme: fixed broken link to MRAA in Readme.md
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-13 17:25:15 -07:00
fd707242a9 node: bumped dependency for node modules to v4.4.x
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-13 17:24:19 -07:00
29bfa7ef79 upm: v0.7.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-12 17:09:17 -07:00
a5e3cc89f3 cmake: Change from search to check for TPV modules.
Switch the calls from pkg_search_module to pkg_check_modules
for ozw, bacnet, and modbus.  Check prints out the version when
found.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-12 16:24:40 -07:00
1eafab7932 lsm9ds0: added constructor option to allow raw i2c bus init
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-12 14:01:45 -07:00
de986764d4 lcm1602: added backlight control and default bus/address for I2C variants
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-12 13:48:06 -07:00
3eda1bce16 cmake: set -march=native for ARM platforms
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-12 11:56:19 -07:00
72b975b6cc vcap: conditionally add target based on findJPEG result
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-11 15:50:56 -07:00
f850f5b7d8 buzzer: updated delay values for notes to match listed frequencies
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-11 14:09:53 -07:00
8e8b35273b SWIG: Added uint8array typemap for zfm20 driver
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-05-09 22:35:13 -07:00
dbb4f1749d [ST7735] Free pointers from spi.write
Docs for MRAA say ` The pointer return has to be free'd by the caller`

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 17:43:48 -07:00
05730dba68 cmake: add dependency on mraa v1.0.0
Merged conflict in grove.cxx GroveTemp::value where new
scale factor was added.  Changed to apply scale factor
post error-check.

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 17:31:38 -07:00
48d5426350 i2c: use mraa 1.0 types for i2c sensors
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 17:13:36 -07:00
e51c5f3018 This is a combination of 2 commits.
aio: mraa_aio_read (v1.0.0) can now return -1, treat that in sensors using it

Adds alot of exceptions if the aio read goes wrong

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 17:13:35 -07:00
f6816797bb bmp280: CMakeLists header variable name.
Missed one instance of module_h for the recent bmp changes.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 16:47:32 -07:00
cc5e3b2634 L3GD20: Enable L3GD20 3-axis digital gyroscope library and example
L3GD20 is tri-axis gyroscope from STMicroelectronics.
This sensor can measure angular velocity in degree per second.

The library provided is libupm-l3gd20.so.0.4.0.
The example provided is l3gd20-example where it will print x,y,z axis when
trigger buffer data is ready.

This sensor requires calibration to be done for 2 seconds. Please place the
sensor on level surface.

As the sensor data is noisy, we have implemented denoise algorithm within the
sensor library.

Signed-off-by: Lay, Kuan Loon <kuan.loon.lay@intel.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 16:34:26 -07:00
c3285ea523 kxcjk1013: code cleanup and update sensor description
Code cleanup and proper close iio device in destructor.

KXCJK-1013 is tri-axis accelerometer from Kionix.
This sensor can measure acceleration in metre per second squared or in
G-forces.

The library provided is libupm-kxcjk1013.so.0.4.0.
The example provided is kxcjk1013-example where it will print x,y,z axis when
trigger buffer data is ready.

Signed-off-by: Lay, Kuan Loon <kuan.loon.lay@intel.com>
2016-05-09 16:32:05 -07:00
456bde0726 bno055: Initial implementation
This driver implements support for the Bosch BNO055 Absolute
Orientation 9DOF Fusion Hub.   It was implemented on the Adafruit
variant at https://www.adafruit.com/products/2472.

The BNO055 is a System in Package (SiP), integrating a triaxial 14-bit
accelerometer, a triaxial 16-bit gyroscope with a range of ±2000
degrees per second, a triaxial geomagnetic sensor and a 32-bit cortex
M0+ microcontroller running Bosch Sensortec sensor fusion software, in
a single package.

This sensor handles the hard problem of combining various sensor
information into a reliable measurement of sensor orientation (refered
to as 'sensor fusion').  The onboard MCU runs this software and can
provide fusion output in the form of Euler Angles, Quaternions, Linear
Acceleration, and Gravity Vectors in 3 axes.

The focus on this driver has been on supporting the fusion components.
Less support is available for use of this device as a generic
accelerometer, gyroscope and magnetometer, however enough
infrastructure is available to add any missing functionality.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:33:11 -07:00
d045dded7c java: add mraa to the java swig link line so mraa symbols can be found
Previously in MRAA, the libmraa library was statically linked into the
libmraajava library.  This was changed recently in MRAA, causing most
java examples to fail due to missing mraa symbols.  This patch
specifically adds libmraa to the link in addition to libmraajava.

In addition, use *_LIBRARIES in the java specific swig_link_libraries
call rather than *_LDFLAGS.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:53 -07:00
89d5ce152f adafruitms1438: remove extraneous libraries from swig_link_libraries() calls
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:52 -07:00
dbbb30c3d2 vcap: remove extraneous libraries from swig_link_libraries() calls
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:52 -07:00
8df446958a ozw: remove extraneous libraries from swig_link_libraries() calls
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:52 -07:00
411b4abcb7 e50hx: remove extraneous libraries from swig_link_libraries() calls
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:52 -07:00
7d64a67670 bacnetmstp: remove extraneous libraries from swig_link_libraries() calls
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:52 -07:00
6b0a9c5272 hwxpxx: remove extraneous libraries from swig_link_libraries() calls
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:52 -07:00
12e1e6309e t3311: remove extraneous libraries from swig_link_libraries() calls
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:51 -07:00
c833c75cd3 h803x: remove extraneous libraries from swig_link_libraries() calls
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:51 -07:00
03354ccf9a interface examples: re-add bme280 support removed when old bme280 was removed
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:24:51 -07:00
6241e20dda bmp280, bme280: Initial implementation
This library adds support for both the BMP280 and BME280 sesnors from
Bosch.  The BME is virtually identical to the BMP280 aside from some
slight register changes and adding support for a humidity sensor.

The BMP280 is an absolute barometric pressure sensor especially
designed for mobile applications. The sensor module is housed in an
extremely compact 8-pin metal-lid LGA package with a footprint of only
2.0 × 2.5 mm2 and 0.95 mm package height. Its small dimensions and its
low power consumption of 2.7 μA @1Hz allow the implementation in
battery driven devices such as mobile phones, GPS modules or watches.

The BME280 is as combined digital humidity, pressure and temperature
sensor based on proven sensing principles. The sensor module is housed
in an extremely compact metal-lid LGA package with a footprint of only
2.5 × 2.5 mm2 with a height of 0.93 mm. Its small dimensions and its
low power consumption allow the implementation in battery driven
devices such as handsets, GPS modules or watches. The BME280 is
register and performance compatible to the Bosch Sensortec BMP280
digital pressure sensor

These drivers support both I2C and SPI operation.

When using SPI on an Edison with the arduino breakout board, you
must specify a CS of -1 to the constructor, and connect the chip's
CS pin to arduino pin 10.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:16:30 -07:00
84144d0c8f bosch bme280: Remove old driver in favor of new driver to be added soon
This driver, based on bosch code is being removed in favor of a new
driver to be added soon that is more fully functional and includes SPI
support.

The new driver will be included along with a BMP280 implementation in
a new bmp280 library.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:16:30 -07:00
dd2bca97b9 bmp180/bmpx0x: Remove old bmp180 driver
This commit removes the old bmp180 driver that was erroneously
re-added when the interface examples and headers were introduced.

It then switches the users of bmp180 to the existing bmpx8x driver,
which already supports the bmp180.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-09 13:13:42 -07:00
cf74a260a3 readme: updated introduction paragraph
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-06 14:18:10 -07:00
61f7803d92 grovetemp: added a scaling factor to allow adjusting ADC values
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-05-06 14:15:10 -07:00
e3b59eb05b apds9930: proper close iio device in destructor and update sensor description
Proper close iio device in destructor.

APDS-9930 is light and proximity sensor from Avago Technologies.
This sensor can measure ambient light in lux and proximity distance in 100mm.

The library provided is libupm-apds9930.so.0.4.0.
The example provided is apds9930-example where this app will print the value of
ambient light and proximity in every 1 second.

Signed-off-by: Lay, Kuan Loon <kuan.loon.lay@intel.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-05 11:37:56 -07:00
398d50de2e kxcjk1013: code cleanup and update sensor description
Code cleanup and proper close iio device in destructor.

KXCJK-1013 is tri-axis accelerometer from Kionix.
This sensor can measure acceleration in metre per second squared or in
G-forces.

The library provided is libupm-kxcjk1013.so.0.4.0.
The example provided is kxcjk1013-example where it will print x,y,z axis when
trigger buffer data is ready.

Signed-off-by: Lay, Kuan Loon <kuan.loon.lay@intel.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-05 11:06:36 -07:00
bbb31fcab2 travis-ci: Fix for non-sticky clang env setting.
The env CC=clang builds were previously getting overridden for each build since
the language: cpp defaults gcc/g++ (travis-ci was not building UPM w/clang).
This commit explicitly adds the clang compiler to the build matrix.

    * Specify gcc/clang in the compiler directive

    * Add a node.js 0.10 entry

    * Add a few debug messages

    * General cleanup of .travis.yml

    * Add the upm make install step for completeness

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-04 13:05:19 -07:00
5467620bf7 cpp_headers: Rename ds18b20 header .h -> .hpp
Renamed header file, updated header filename in interface files,
sources, and CMakeLists file.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-02 16:05:20 -07:00
e679d40d44 ds18b20: Initial implementation
This driver supports, and was tested with, a DS18B20 1-wire
Temperature Sensor using external power.

This device requires the use of a UART to provide access to a Dallas
1-wire bus, via a new facility supported by MRAA (once the relevant PR
is accepted), using the UartOW access class.  It is important to
realize that the UART is only being used to access and control a
Dallas 1-wire compliant bus, it is not actually a UART device.

Multiple DS18B20 devices can be connected to this bus.  This module
will identify all such devices connected, and allow you to access them
using an index starting at 0.

Parasitic power is not currently supported due to the very tight 10us
limit on switching a GPIO properly to supply power during certain
operations.  For this reason, you should use external power for your
sensors.

Setting the alarm values (Tl, Th) is also not supported, since this is
only useful when doing a 1-wire device search looking for devices in
an alarm state, a capability not yet supported in MRAA.  In reality,
this is trivial to handle yourself in your application.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-05-02 16:04:56 -07:00
bf9059c846 cpp_headers: Rename ds2413 header .h -> .hpp
Renamed header file, updated header filename in interface files,
sources, and CmakeLists file.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-04-29 16:46:03 -07:00
e1bda1f44b ds2413: Initial implementation
This adds initial support for the DS2413 Dual Channel Addressable
Switch.  This is a Dallas Semiconductor 1-wire compliant device
providing access to 2 open-drain GPIOs.

https://learn.adafruit.com/adafruit-1-wire-gpio-breakout-ds2413/overview

This driver requires One-Wire over UART support in MRAA (PR #415)
which is not yet merged.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-04-29 16:37:30 -07:00
893b35f77b Java: Added Examples for Sensors
max31855, max5487, maxds3231m, ecs1030 and sm130

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2016-04-29 11:07:10 -07:00
a7e803873f docs: Updated porting documentation to reflect c++ header change.
Replaced module_h with module_hpp for example CMakeLists.txt
file.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-04-28 17:21:20 -07:00
612f53ee40 examples: More header file renames
Missed 4 header file renames in C++ examples.  Fixing that
here.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-04-28 16:40:18 -07:00
922e0cc26b cpp_headers: Renamed C++ headers from .h -> .hpp
To make room for UPM C and C++ sensor code to coexist, all UPM
C++ headers have been renamed from h -> hpp.  This commit contains
updates to documentation, includes, cmake collateral, examples, and
swig interface files.

    * Renamed all cxx/cpp header files which contain the string
    'copyright intel' from .h -> .hpp (if not already hpp).

    * Replaced all references to .h with .hpp in documentation,
    source files, cmake collateral, example code, and swig interface
    files.

    * Replaced cmake variable module_h with module_hpp.

    * Intentionally left upm.h since this file currently does not
    contain code (documentation only).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-04-28 14:00:54 -07:00
b3a8fd7172 eboled: change write_word to writeWord for MRAA 1.0 API change.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-04-28 13:17:20 -07:00
4455c81866 mic: fixed web link
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-25 10:54:16 -07:00
6b273a1b49 docs: Added exclude to Doxyfile for boschdriver src.
The boschdriver.h file contains tags which are picked up by
doxygen and cause incorrect results.  For example, the
\mainpage and \license cause the Bosch header collateral to
be placed on the index.html page of the UPM docs.

Added an entry to EXCLUDE_PATTERNS which handles this.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-04-21 15:21:04 -07:00
2393 changed files with 92523 additions and 25922 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
build/
build*/
# Object files
*.o

View File

@ -1,38 +1,48 @@
language: cpp
env:
- CC=gcc CXX=gcc
- CC=clang CXX=clang++
- NODE4=true
- NODE5=true
- NODE012=true
global:
- MRAA_ROOT=/tmp/mraa
- MRAA_BUILD=$MRAA_ROOT/build
- UPM_ROOT=$TRAVIS_BUILD_DIR
- UPM_BUILD=$UPM_ROOT/build
- JAVA_HOME=/usr/lib/jvm/java-8-oracle
matrix:
- NODE010=true
- NODE012=true
- NODE4=true
- NODE5=true
compiler:
- clang
- gcc
install:
- sudo add-apt-repository --yes ppa:fenics-packages/fenics-exp/swig
- sudo add-apt-repository --yes ppa:fenics-packages/fenics-dev/swig
- sudo apt-get update -qq
- sudo apt-get install -y -qq swig3.0 git
- sudo apt-get install -y --force-yes -qq swig3.0 git
- sudo ln -s /usr/bin/swig3.0 /usr/bin/swig
- sudo update-java-alternatives -s java-8-oracle
before_script:
- export NODE_ROOT_DIR="/home/travis/.nvm/v0.10.36"
- if [ "$CC" = "gcc" ]; then export BUILDJAVA=ON; else export BUILDJAVA=OFF; fi
- export JAVA_HOME=/usr/lib/jvm/java-8-oracle
- if [ "${NODE4}" ]; then nvm install 4.1; export CC=gcc-4.8; export CXX=g++-4.8; export NODE_ROOT_DIR="/home/travis/.nvm/versions/node/`nvm version`"; fi
- if [ "${NODE5}" ]; then nvm install 5; export CC=gcc-4.8; export CXX=g++-4.8; export NODE_ROOT_DIR="/home/travis/.nvm/versions/node/`nvm version`"; fi
- if [ "${NODE012}" ]; then nvm install 0.12; export NODE_ROOT_DIR="/home/travis/.nvm/versions/node/`nvm version`"; fi
# Turn off JAVA SWIG for clang++, use 4.8 for all g++ builds
- if [ "$CC" == "gcc" ]; then export BUILDJAVA=ON; export CC=gcc-4.8; export CXX=g++-4.8; else export BUILDJAVA=OFF; fi
- if [ "${NODE012}" ]; then nvm install 0.12; fi
- if [ "${NODE4}" ]; then nvm install 4.1; fi
- if [ "${NODE5}" ]; then nvm install 5; fi
# Handle 0.10 NODE_ROOT_DIR differently than other versions
- if [ -z ${NODE010} ]; then export NODE_ROOT_DIR="/home/travis/.nvm/versions/node/`nvm version`"; else export NODE_ROOT_DIR=/home/travis/.nvm/v0.10.36; fi
script:
- git clone https://github.com/intel-iot-devkit/mraa.git
- cd mraa && mkdir build && cd build && cmake -DBUILDSWIGJAVA=$BUILDJAVA -DBUILDSWIGNODE=OFF -DBUILDSWIGPYTHON=OFF -DFIRMATA=ON -DENABLEEXAMPLES=OFF -DCMAKE_INSTALL_PREFIX:PATH=. .. && make && make install
- export PKG_CONFIG_PATH=$PWD/lib/pkgconfig:$PWD/lib/x86_64-linux-gnu/pkgconfig
- export CPLUS_INCLUDE_PATH=$PWD/include
- export LIBRARY_PATH=$PWD/lib:$PWD/lib/x86_64-linux-gnu
- cd ../.. && mkdir build && cd build && cmake -DNODE_ROOT_DIR:PATH="${NODE_ROOT_DIR}" -DBUILDSWIGJAVA=$BUILDJAVA -DBUILDEXAMPLES=ON -DBUILDJAVAEXAMPLES=$BUILDJAVA .. && make
# Build/install MRAA
- echo "CC=$CC BUILDJAVA=$BUILDJAVA NODE010=$NODE010 NODE012=$NODE012 NODE4=$NODE4 NODE5=$NODE5 NODE_ROOT_DIR=$NODE_ROOT_DIR"
- git clone https://github.com/intel-iot-devkit/mraa.git $MRAA_ROOT
- mkdir -p $MRAA_BUILD && cd $_ && cmake -DBUILDSWIGJAVA=$BUILDJAVA -DBUILDSWIGNODE=OFF -DBUILDSWIGPYTHON=ON -DFIRMATA=ON -DENABLEEXAMPLES=OFF $MRAA_ROOT
- sudo make install
- sudo ldconfig
# Build/install UPM
- cd $UPM_ROOT && mkdir $UPM_BUILD && cd $_ && cmake -DNODE_ROOT_DIR:PATH="${NODE_ROOT_DIR}" -DBUILDSWIGJAVA=$BUILDJAVA -DBUILDEXAMPLES=ON -DBUILDJAVAEXAMPLES=$BUILDJAVA -DBUILDTESTS=ON .. && sudo make install && sudo ldconfig && ctest --output-on-failure -E examplenames_js
addons:
apt:
sources:
- llvm-toolchain-precise-3.6
- ubuntu-toolchain-r-test
- george-edison55-precise-backports
packages:
- clang-3.6
- g++-4.8
- cmake
- cmake-data
- g++-4.8

View File

@ -1,20 +1,182 @@
cmake_minimum_required (VERSION 2.8.11)
project (upm)
# Before going any further, define build options
option (BUILDDOC "Build all doc" OFF)
option (BUILDCPP "Build CPP sensor libraries" ON)
option (BUILDFTI "Build Funtion Table Interface (FTI) in C sensor libraries" OFF)
option (BUILDSWIGPYTHON "Build swig python modules" ON)
option (BUILDSWIGNODE "Build swig node modules" ON)
option (BUILDSWIGJAVA "Build swig java modules" OFF)
option (BUILDEXAMPLES "Build C/C++ example binaries" OFF)
option (BUILDJAVAEXAMPLES "Build java example jars" OFF)
option (IPK "Generate IPK using CPack" OFF)
option (RPM "Generate RPM using CPack" OFF)
option (NPM "Generate NPM/GYP tarballs" OFF)
option (BUILDTESTS "Generate check-ups for upm" OFF)
option (WERROR "Make all warnings into errors." ON)
# Warn if building in source root
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message("WARNING: building into sources dir can be risky, prefer other directory")
message (WARNING "Building into sources dir can be risky, prefer other directory")
endif ()
# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
# Check if provided compiler supports target flag
# usage:
# compiler_flag_supported(C/CXX is_supported flag)
#
# The result of output_variable is set to the sanitized flag name if supported
# or cleared if the flag is not supported.
function (compiler_flag_supported compiler output_variable flag)
# Currently only C and CXX compile flags, clear and return if not supported
if (NOT ${compiler} MATCHES "C|CXX")
message (WARNING "Unknown compiler: ${compiler}")
set ("${output_variable}" "" PARENT_SCOPE)
return ()
endif (NOT ${compiler} MATCHES "C|CXX")
string (REPLACE "-" "_" SANITIZED_FLAG_NAME "${flag}")
string (REPLACE "/" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
string (REPLACE "=" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
string (REPLACE " " "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
# Disable messages from CHECK_C/XX_COMPILER_FLAGS macros
set (CMAKE_REQUIRED_QUIET_SAVED ${CMAKE_REQUIRED_QUIET})
set (CMAKE_REQUIRED_QUIET ON)
# C or CXX?
if (${compiler} STREQUAL C)
CHECK_C_COMPILER_FLAG("${flag}" HAS_${SANITIZED_FLAG_NAME})
elseif (${compiler} STREQUAL CXX)
CHECK_CXX_COMPILER_FLAG("${flag}" HAS_${SANITIZED_FLAG_NAME})
endif ()
# Restore previous CMAKE_REQUIRED_QUIET state
set (CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVED})
# Does the compiler support this flag?
if (HAS_${SANITIZED_FLAG_NAME})
set ("${output_variable}" "${SANITIZED_FLAG_NAME}" PARENT_SCOPE)
else ()
set ("${output_variable}" "" PARENT_SCOPE)
endif()
endfunction ()
include (CheckCCompilerFlag)
include (CheckCXXCompilerFlag)
# Add scoped compile flag/s using add_compile_options.
# This function checks to see if each flag is supported
# by the compiler before setting the compile option.
function (upm_add_compile_flags compiler)
set (_TMP_COMPILER_FLAGS "")
# Iterate the flags, check if supported
foreach (flag ${ARGN})
# Check if this compile flag is supported
compiler_flag_supported(${compiler} is_supported ${flag})
# Add if supported, warn and skip if not supported
if (is_supported)
set (_TMP_COMPILER_FLAGS "${_TMP_COMPILER_FLAGS} ${flag}")
else ()
message (WARNING "${compiler} compiler does not support flag \"${flag}\"")
endif ()
endforeach (flag ${ARGN})
# Set the variable in the parent scope
set (CMAKE_${compiler}_FLAGS "${CMAKE_${compiler}_FLAGS} ${_TMP_COMPILER_FLAGS}" PARENT_SCOPE)
endfunction ()
# Compiler flags common to both C and CXX
# Enable -Wall
# GCC-6 added -Wmisleading-indentation to -Wall, skip these for now
set (C_CXX_WARNING_FLAGS -Wall -Wno-misleading-indentation -Wno-strict-aliasing)
# Warnings as errors?
if (WERROR)
set (C_CXX_WARNING_FLAGS "-Werror ${C_CXX_WARNING_FLAGS}")
message (STATUS "Warnings as errors enabled (-Werror), disable with -DWERROR=off")
endif (WERROR)
# Set C compiler warning flags at top-level scope and emit a warning about
# unsupported flags
upm_add_compile_flags(C ${C_CXX_WARNING_FLAGS}
-Winit-self
-Wimplicit
-Wmissing-parameter-type)
# Set CXX compiler warning flags at top-level scope and emit a warning about
# unsupported flags
upm_add_compile_flags(CXX ${C_CXX_WARNING_FLAGS}
-Wnon-virtual-dtor
-Woverloaded-virtual
-Wreorder)
find_package (Threads REQUIRED)
find_package (PkgConfig REQUIRED)
# Force a libmraa search and minimum required version every time a config is generated
unset(MRAA_FOUND CACHE)
pkg_check_modules (MRAA REQUIRED mraa>=0.9.1)
message (INFO " found mraa version: ${MRAA_VERSION}")
set(MRAA_MINIMUM 1.1.1)
pkg_check_modules (MRAA REQUIRED mraa>=${MRAA_MINIMUM})
# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
# Check for BACNET
pkg_check_modules (BACNET libbacnet)
# Check for MODBUS
pkg_check_modules (MODBUS libmodbus>=3.1.2)
# Check for OPENZWAVE
pkg_check_modules (OPENZWAVE libopenzwave)
# Find JPEG
find_package (JPEG)
# Find nodejs
if (BUILDSWIGNODE)
find_package (Node REQUIRED)
endif (BUILDSWIGNODE)
# Find swig if any wrapper is enabled
if (BUILDSWIGPYTHON OR BUILDSWIGNODE OR BUILDSWIGJAVA)
find_package (SWIG 3.0.5 REQUIRED)
include (${SWIG_USE_FILE})
endif ()
# Python is required for swig generated python and for UPM tests.
# The UPM build can generated modules for both python2 AND python3
# with the corresponding PYTHONLIBS. Currently, BUILDTESTS has a
# hard dependency on the PYTHON2INTERP.
# OpenCV python detect will attempt to find python2/3
if (BUILDSWIGPYTHON OR BUILDTESTS)
include (cmake/modules/OpenCVDetectPython.cmake)
# Fail if building tests but no python interpreter was found
if (BUILDTESTS AND NOT PYTHON2INTERP_FOUND)
message(FATAL_ERROR "BUILDTESTS=ON requires the python2 interpreter")
endif (BUILDTESTS AND NOT PYTHON2INTERP_FOUND)
# Fail if no LIBS were found
if (NOT PYTHON2LIBS_FOUND AND NOT PYTHON3LIBS_FOUND)
message(FATAL_ERROR "At least one python lib is required")
endif (NOT PYTHON2LIBS_FOUND AND NOT PYTHON3LIBS_FOUND)
endif (BUILDSWIGPYTHON OR BUILDTESTS)
# Which versions of python were found?
if (PYTHON2LIBS_FOUND AND BUILDSWIGPYTHON)
message(STATUS "Building python2 modules with python-${PYTHON2LIBS_VERSION_STRING}")
endif (PYTHON2LIBS_FOUND AND BUILDSWIGPYTHON)
if (PYTHON3LIBS_FOUND AND BUILDSWIGPYTHON)
message(STATUS "Building python3 modules with python-${PYTHON3LIBS_VERSION_STRING}")
endif (PYTHON3LIBS_FOUND AND BUILDSWIGPYTHON)
# Python2 is currently required for python documentation
if (BUILDSWIGPYTHON AND BUILDDOC AND NOT PYTHON2INTERP_FOUND)
message(FATAL_ERROR "Failed to find python2 interpreter which is required "
"to build python documentation.")
endif (BUILDSWIGPYTHON AND BUILDDOC AND NOT PYTHON2INTERP_FOUND)
# Set CMAKE_INSTALL_LIBDIR if not defined
include(GNUInstallDirs)
@ -23,12 +185,14 @@ set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation path for
# Make a version file containing the current version from git.
include (GetGitRevisionDescription)
git_describe (VERSION "--tags")
if ("x_${VERSION}" STREQUAL "x_GIT-NOTFOUND" OR "x_${VERSION}" STREQUAL "x_-128-NOTFOUND")
message (WARNING " - Install git to compile a production UPM!")
set (VERSION "v0.6.2-dirty")
# If git_describe fails, use a dirty version
if (${VERSION} MATCHES -NOTFOUND)
set (VERSION "v1.0.1-dirty")
message (WARNING "Failed to retrieve UPM version with 'git describe' (using "
"${VERSION}). Check that git is installed and this is a valid git repo.")
endif ()
message (INFO " - UPM Version ${VERSION}")
message (STATUS "UPM Version ${VERSION}")
# Parse the version information into pieces.
string (REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION}")
@ -46,86 +210,103 @@ set (upm_VERSION_MINOR ${VERSION_MINOR})
set (upm_VERSION_PATCH ${VERSION_PATCH})
set (upm_VERSION_STRING ${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH})
set (CMAKE_SWIG_FLAGS "")
option (BUILDDOC "Build all doc." OFF)
option (BUILDSWIG "Build swig modules." ON)
option (BUILDSWIGPYTHON "Build swig python modules." ON)
option (BUILDPYTHON3 "Use python3 for building/installing/testing" OFF)
option (BUILDSWIGNODE "Build swig node modules." ON)
option (BUILDEXAMPLES "Build C++ example binaries" OFF)
option (BUILDJAVAEXAMPLES "Build java example jars" OFF)
option (BUILDSWIGJAVA "Build swig java modules" OFF)
option (IPK "Generate IPK using CPack" OFF)
option (RPM "Generate RPM using CPack" OFF)
option (BUILDTESTS "Generate check-ups for upm" ON)
option (ENABLECXX11 "Enable C++11 standards support" ON)
# Find swig
if (BUILDSWIG)
if (BUILDSWIGNODE)
find_package (SWIG 3.0.5 REQUIRED)
else ()
find_package (SWIG REQUIRED)
endif ()
if (SWIG_FOUND)
include (${SWIG_USE_FILE})
endif ()
endif ()
# Detect arch
include (TargetArch)
target_architecture (DETECTED_ARCH)
message( INFO " - Target arch is ${DETECTED_ARCH}")
message (STATUS "Target arch is ${DETECTED_ARCH}")
# enable c++11 standards support
if (ENABLECXX11)
include(CheckCXXCompilerFlag)
if (CMAKE_VERSION VERSION_LESS "3.1")
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if (COMPILER_SUPPORTS_CXX11)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif (COMPILER_SUPPORTS_CXX0X)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(WARNING "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please update your C++ compiler.")
endif()
else()
# 3.1+ uses this generic method to enable c++11
set (CMAKE_CXX_STANDARD 11)
endif()
else()
message(WARNING "Some modules require C++11 support, and may not build without it.")
#-march=native for ARM when not defined/forced
if (DETECTED_ARCH MATCHES "arm.*" AND NOT CMAKE_CXX_FLAGS MATCHES "-march")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
# enable c++11 standards support unconditionally
include(CheckCXXCompilerFlag)
if (CMAKE_VERSION VERSION_LESS "3.1")
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if (COMPILER_SUPPORTS_CXX11)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif (COMPILER_SUPPORTS_CXX0X)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(FATAL_ERROR "A C++11 compliant compiler is required to build UPM.")
endif()
else()
# 3.1+ uses this generic method to enable c++11
set (CMAKE_CXX_STANDARD 11)
set (CXX_STANDARD_REQUIRED ON)
set (CXX_EXTENSIONS OFF)
endif()
include(CheckCCompilerFlag)
if (CMAKE_VERSION VERSION_LESS "3.1")
CHECK_C_COMPILER_FLAG("-std=c11" COMPILER_SUPPORTS_C11)
if (COMPILER_SUPPORTS_C11)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
else()
message(FATAL_ERROR "A C11 compliant C compiler is required to build UPM.")
endif()
else()
# 3.1+ uses this generic method to enable c11
set (CMAKE_C_STANDARD 11)
set (C_STANDARD_REQUIRED ON)
set (C_EXTENSIONS OFF)
endif()
# The doc target depends on each sensor target
#
# doc
# ├──> libupm_sensor0
# ├──> libupm_sensor1
# ├──> libupm_sensor2
# └──> libupm_sensor_n
#
# The pydoc target builds documentation with sphinx via inspection by loading
# each python module. Those modules must include the CXX documentation via
# a monolithic swig file generated by doxy2swig
#
# pydoc
# └──> _pyupm_sensor0_python2
# ├──────> libupm_sensor0
# └──────> doxy2swig
#
# The doxy2swig target is dependent upon the doc target IF BUILDDOC=ON,
# otherwise doxy2swig uses an empty file. Doxy2swig also depends on each
# sensor target
#
# doxy2swig
# ├──> BUILDDOC=ON───> doc
# └──> libupm_sensor0
#
# The jsdoc target builds js documentation via yuidoc and only requires
# the doc target
#
# jsdoc ─> doc
#
if (BUILDDOC)
# Add a target to generate API documentation with Doxygen
find_package (Doxygen)
if (DOXYGEN_FOUND)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
if (BUILDSWIGJAVA)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.java.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-java @ONLY)
endif()
file(GLOB PNG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/docs docs/icons/*.png)
foreach(PNG_FILE ${PNG_FILES})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/${PNG_FILE} ${CMAKE_CURRENT_BINARY_DIR}/html/docs/${PNG_FILE} COPYONLY)
endforeach()
add_custom_target (doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
COMMAND tar -czf html/xml.tar.gz -C xml .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
endif (DOXYGEN_FOUND)
# Check if Sphinx is installed and add target to generate API documentation
find_package (Sphinx)
if(SPHINX_FOUND AND BUILDSWIG AND BUILDSWIGPYTHON)
# Python required for Sphinx build
find_package (PythonLibs ${PYTHONBUILD_VERSION} REQUIRED)
string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING})
list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR)
list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR)
find_package (Doxygen REQUIRED)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
if (BUILDSWIGJAVA)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.java.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-java @ONLY)
endif()
file(GLOB PNG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/docs docs/icons/*.png)
foreach(PNG_FILE ${PNG_FILES})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/${PNG_FILE} ${CMAKE_CURRENT_BINARY_DIR}/html/docs/${PNG_FILE} COPYONLY)
endforeach()
add_custom_target (doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
COMMAND tar -czf html/xml.tar.gz -C xml .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
# Check if Sphinx is installed and add target to generate API documentationa
# Currently, the per-module documentation for python is generated from the
# python2 modules.
if(BUILDSWIGPYTHON)
find_package (Sphinx REQUIRED)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/pydoc/conf.py @ONLY)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/index.rst ${CMAKE_CURRENT_BINARY_DIR}/pydoc/index.rst COPYONLY)
add_custom_target (pydoc ALL
@ -141,12 +322,11 @@ if (BUILDDOC)
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Sphinx" VERBATIM
)
endif ()
endif(BUILDSWIGPYTHON)
# Check if Yuidoc is installed and add target for API documentation
find_package(Yuidoc)
if(YUIDOC_FOUND AND BUILDSWIGNODE)
# Node required for Yuidoc documentation
find_package(Node)
if(BUILDSWIGNODE)
find_package(Yuidoc REQUIRED)
file(GLOB_RECURSE JSDOC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/doxy/node doxy/node/*)
foreach(JSDOC_FILE ${JSDOC_FILES})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxy/node/${JSDOC_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${JSDOC_FILE} COPYONLY)
@ -159,11 +339,10 @@ if (BUILDDOC)
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Yuidoc" VERBATIM
)
endif()
endif()
endif(BUILDSWIGNODE)
endif (BUILDDOC)
if (IPK)
# Get target package arch from Yocto ADT sysroot if set or host OS, mapping to Ubuntu name if necessary
if (DEFINED ENV{OECORE_TARGET_SYSROOT})
GET_FILENAME_COMPONENT (DETECTED_SYSROOT $ENV{OECORE_TARGET_SYSROOT} NAME)
@ -176,7 +355,7 @@ if (IPK)
set (TARGET_ARCH ${DETECTED_ARCH})
endif ()
endif ()
message (INFO " - Package arch is ${TARGET_ARCH}")
message (STATUS "Package arch is ${TARGET_ARCH}")
set(CPACK_GENERATOR "DEB")
set(OPKG_ARCH ${TARGET_ARCH})
@ -201,7 +380,7 @@ if (IPK)
endif()
if (RPM)
message (INFO " - RPM packaging enabled for ${DETECTED_ARCH}")
message (STATUS "RPM packaging enabled for ${DETECTED_ARCH}")
set(CPACK_PACKAGE_VERSION ${VERSION})
set(CPACK_GENERATOR "RPM")
set(CPACK_PACKAGE_NAME "upm")
@ -226,26 +405,29 @@ if (RPM)
include(CPack)
endif()
add_subdirectory (src)
# UPM common headers
set (UPM_COMMON_HEADER_DIRS
${CMAKE_HOME_DIRECTORY}/include
${CMAKE_HOME_DIRECTORY}/include/fti)
add_subdirectory (src)
if(BUILDEXAMPLES)
add_subdirectory (examples/c++)
add_subdirectory (examples/c)
if(BUILDCPP)
add_subdirectory (examples/c++)
endif(BUILDCPP)
endif()
if(BUILDJAVAEXAMPLES)
add_subdirectory (examples/java)
endif()
if (BUILDSWIGPYTHON OR BUILDTESTS)
if (BUILDPYTHON3)
set (PYTHONBUILD_VERSION 3)
else ()
set (PYTHONBUILD_VERSION 2.7)
endif ()
endif ()
# Python interp is previously found if BUILDTESTS=ON
if (BUILDTESTS)
find_package (PythonInterp ${PYTHONBUILD_VERSION} REQUIRED)
enable_testing ()
add_subdirectory (tests)
endif()
# Install C headers
install(DIRECTORY include/ DESTINATION include/upm
FILES_MATCHING PATTERN "*.h")

View File

@ -1,29 +1,29 @@
UPM (Useful Packages & Modules) Sensor/Actuator repository for MRAA
==============
UPM is a high level repository for sensors that use MRAA. Each sensor links
to MRAA and are not meant to be interlinked although some groups of sensors
may be. Each sensor contains a header which allows to interface with it.
Typically a sensor is represented as a class and instantiated.
The UPM repository provides software drivers for a wide variety of commonly
used sensors and actuators. These software drivers interact with the
underlying hardware platform (or microcontroller), as well as with the attached
sensors, through calls to [MRAA](https://github.com/intel-iot-devkit/mraa) APIs.
The constructor is expected to initialise the sensor and parameters may be used
to provide identification/pin location on the board.
Programmers can access the interfaces for each sensor by including the sensors
corresponding header file and instantiating the associated sensor class. In the
typical use case, a constructor initializes the sensor based on parameters that
identify the sensor, the I/O protocol used and the pin location of the sensor.
Typically an update() function will be called in order to get new data from the
sensor in order to reduce load when doing multiple reads to sensor data.
Although implementation and API design is up to the developer, C++ interfaces have
been defined for the following sensor/actuator types and developers are encouraged to
implement them. Interface header files are in the src/upm folder.
C++ interfaces have been defined for the following sensor/actuator types, but
they are subject to change:
* Light controller
* Light sensor
* Temperature sensor
* Humidity sensor
* Pressure sensor
* Gas sensor
* Analog to digital converter
Feedback on interface design and additions for new types are welcome
The developer community is encouraged to help expand the list of supported
sensors and actuators and provide feedback on interface design.
### Example
@ -73,7 +73,7 @@ Multi-sensor samples for the starter and specialized kits can be found in the
Supported [sensor list](http://iotdk.intel.com/docs/master/upm/modules.html) from API documentation.
You can also refer to the [Intel® IoT Developer Zone](https://software.intel.com/iot/sensors).
You can also refer to the [Intel® IoT Developer Zone](https://software.intel.com/iot/hardware/sensors).
### IDE Integration
@ -86,6 +86,8 @@ please refer to the Intel Developer Zone IDE page.
See building documentation [here](docs/building.md).
[![Build Status](https://travis-ci.org/intel-iot-devkit/upm.svg?branch=master)](https://travis-ci.org/intel-iot-devkit/upm)
### Making your own UPM module
Porting [link](docs/porting.md) has more information on making new UPM modules.
@ -120,8 +122,7 @@ our API in a way that will break backwards compatibility. If you find yourself
unable to compile code that was working fine before a library update, make sure
you check the [API changes](docs/apichanges.md) section first.
**NOTE** - Our **C++ header files** will change their extension from *.h* to
*.hpp* in the upcoming version.
**NOTE** - Our **C++ header files** changed extension from *.h* to *.hpp*!
### Changelog
Version changelog [here](docs/changelog.md).

View File

@ -95,7 +95,7 @@ IF(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
# $ dpkg --print-architecture
FIND_PROGRAM(DPKG_CMD dpkg)
IF(NOT DPKG_CMD)
MESSAGE(STATUS "Can not find dpkg in your path, default to i386.")
MESSAGE(WARNING "Can not find dpkg in your path, default to i386.")
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
ENDIF(NOT DPKG_CMD)
EXECUTE_PROCESS(COMMAND "${DPKG_CMD}" --print-architecture

View File

@ -89,8 +89,8 @@ if (NODEJS_EXECUTABLE)
endif ()
string (REGEX REPLACE "\n" "" NODE_VERSION_STRING ${NODE_VERSION_STRING})
string (REGEX REPLACE "\n" "" V8_VERSION_STRING ${V8_VERSION_STRING})
message ("INFO - Node version is " ${NODE_VERSION_STRING})
message ("INFO - Node using v8 " ${V8_VERSION_STRING})
message (STATUS "Node version is ${NODE_VERSION_STRING}")
message (STATUS "Node using v8 ${V8_VERSION_STRING}")
mark_as_advanced (NODEJS_EXECUTABLE)
endif ()

View File

@ -23,7 +23,7 @@ if (SPHINX_EXECUTABLE)
OUTPUT_VARIABLE SPHINX_VERSION)
if(SPHINX_VERSION)
string(REGEX MATCH "([0-9]\\.[0-9]\\.[0-9])" SPHINX_VERSION_STR ${SPHINX_VERSION})
message ("INFO - Sphinx version is " ${SPHINX_VERSION_STR})
message (STATUS "Sphinx version is ${SPHINX_VERSION_STR}")
endif()
endif ()

View File

@ -14,9 +14,11 @@ find_package_handle_standard_args (Yuidoc DEFAULT_MSG
# Get Yuidoc version
if (YUIDOC_EXECUTABLE)
execute_process(COMMAND ${YUIDOC_EXECUTABLE} --version
ERROR_VARIABLE YUIDOC_VERSION)
ERROR_VARIABLE YUIDOC_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE)
if(YUIDOC_VERSION)
message ("INFO - Yuidoc version is " ${YUIDOC_VERSION})
message (STATUS "Yuidoc version is ${YUIDOC_VERSION}")
endif()
endif ()

View File

@ -0,0 +1,160 @@
# Find specified Python version
# Arguments:
# preferred_version (value): Version to check for first
# min_version (value): Minimum supported version
# library_env (value): Name of Python library ENV variable to check
# include_dir_env (value): Name of Python include directory ENV variable to check
# found (variable): Set if interpreter found
# executable (variable): Output of executable found
# version_string (variable): Output of found version
# version_major (variable): Output of found major version
# version_minor (variable): Output of found minor version
# libs_found (variable): Set if libs found
# libs_version_string (variable): Output of found libs version
# libraries (variable): Output of found Python libraries
# library (variable): Output of found Python library
# debug_libraries (variable): Output of found Python debug libraries
# debug_library (variable): Output of found Python debug library
# include_path (variable): Output of found Python include path
# include_dir (variable): Output of found Python include dir
# include_dir2 (variable): Output of found Python include dir2
# packages_path (variable): Output of found Python packages path
function(find_python preferred_version min_version library_env include_dir_env
found executable version_string version_major version_minor
libs_found libs_version_string libraries library debug_libraries
debug_library include_path include_dir include_dir2 packages_path)
if(NOT ${found})
if(${executable})
set(PYTHON_EXECUTABLE "${${executable}}")
endif()
find_package(PythonInterp "${preferred_version}")
if(NOT PYTHONINTERP_FOUND)
find_package(PythonInterp "${min_version}")
endif()
if(PYTHONINTERP_FOUND)
# Copy outputs
set(_found ${PYTHONINTERP_FOUND})
set(_executable ${PYTHON_EXECUTABLE})
set(_version_string ${PYTHON_VERSION_STRING})
set(_version_major ${PYTHON_VERSION_MAJOR})
set(_version_minor ${PYTHON_VERSION_MINOR})
set(_version_patch ${PYTHON_VERSION_PATCH})
# Clear find_host_package side effects
unset(PYTHONINTERP_FOUND)
unset(PYTHON_EXECUTABLE CACHE)
unset(PYTHON_VERSION_STRING)
unset(PYTHON_VERSION_MAJOR)
unset(PYTHON_VERSION_MINOR)
unset(PYTHON_VERSION_PATCH)
endif()
if(_found)
set(_version_major_minor "${_version_major}.${_version_minor}")
if(NOT ANDROID AND NOT APPLE_FRAMEWORK)
# not using _version_string here, because it might not conform to the CMake version format
if(CMAKE_CROSSCOMPILING)
# builder version can differ from target, matching base version (e.g. 2.7)
find_package(PythonLibs "${_version_major_minor}")
else()
find_package(PythonLibs "${_version_major_minor}.${_version_patch}" EXACT)
endif()
if(PYTHONLIBS_FOUND)
# Copy outputs
set(_libs_found ${PYTHONLIBS_FOUND})
set(_libraries ${PYTHON_LIBRARIES})
set(_include_path ${PYTHON_INCLUDE_PATH})
set(_include_dirs ${PYTHON_INCLUDE_DIRS})
set(_debug_libraries ${PYTHON_DEBUG_LIBRARIES})
set(_libs_version_string ${PYTHONLIBS_VERSION_STRING})
set(_debug_library ${PYTHON_DEBUG_LIBRARY})
set(_library ${PYTHON_LIBRARY})
set(_library_debug ${PYTHON_LIBRARY_DEBUG})
set(_library_release ${PYTHON_LIBRARY_RELEASE})
set(_include_dir ${PYTHON_INCLUDE_DIR})
set(_include_dir2 ${PYTHON_INCLUDE_DIR2})
# Clear find_package side effects
unset(PYTHONLIBS_FOUND)
unset(PYTHON_LIBRARIES)
unset(PYTHON_INCLUDE_PATH)
unset(PYTHON_INCLUDE_DIRS)
unset(PYTHON_DEBUG_LIBRARIES)
unset(PYTHONLIBS_VERSION_STRING)
unset(PYTHON_DEBUG_LIBRARY CACHE)
unset(PYTHON_LIBRARY)
unset(PYTHON_LIBRARY_DEBUG)
unset(PYTHON_LIBRARY_RELEASE)
unset(PYTHON_LIBRARY CACHE)
unset(PYTHON_LIBRARY_DEBUG CACHE)
unset(PYTHON_LIBRARY_RELEASE CACHE)
unset(PYTHON_INCLUDE_DIR CACHE)
unset(PYTHON_INCLUDE_DIR2 CACHE)
endif()
endif()
execute_process(COMMAND ${_executable} -c "from distutils.sysconfig import *; print(get_python_lib())"
RESULT_VARIABLE _cvpy_process
OUTPUT_VARIABLE _std_packages_path
OUTPUT_STRIP_TRAILING_WHITESPACE)
if("${_std_packages_path}" MATCHES "site-packages")
set(_packages_path "python${_version_major_minor}/site-packages")
else() #debian based assumed, install to the dist-packages.
set(_packages_path "python${_version_major_minor}/dist-packages")
endif()
if(EXISTS "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${${packages_path}}")
set(_packages_path "lib${LIB_SUFFIX}/${_packages_path}")
else()
set(_packages_path "lib/${_packages_path}")
endif()
endif()
# Export return values
set(${found} "${_found}" CACHE INTERNAL "")
set(${executable} "${_executable}" CACHE FILEPATH "Path to Python interpretor")
set(${version_string} "${_version_string}" CACHE INTERNAL "")
set(${version_major} "${_version_major}" CACHE INTERNAL "")
set(${version_minor} "${_version_minor}" CACHE INTERNAL "")
set(${libs_found} "${_libs_found}" CACHE INTERNAL "")
set(${libs_version_string} "${_libs_version_string}" CACHE INTERNAL "")
set(${libraries} "${_libraries}" CACHE INTERNAL "Python libraries")
set(${library} "${_library}" CACHE FILEPATH "Path to Python library")
set(${debug_libraries} "${_debug_libraries}" CACHE INTERNAL "")
set(${debug_library} "${_debug_library}" CACHE FILEPATH "Path to Python debug")
set(${include_path} "${_include_path}" CACHE INTERNAL "")
set(${include_dir} "${_include_dir}" CACHE PATH "Python include dir")
set(${include_dir2} "${_include_dir2}" CACHE PATH "Python include dir 2")
set(${packages_path} "${_packages_path}" CACHE PATH "Where to install the python packages.")
endif()
endfunction(find_python)
set(MIN_VER_PYTHON2 2.7)
set(MIN_VER_PYTHON3 3.2)
find_python(2.7 "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR
PYTHON2INTERP_FOUND PYTHON2_EXECUTABLE PYTHON2_VERSION_STRING
PYTHON2_VERSION_MAJOR PYTHON2_VERSION_MINOR PYTHON2LIBS_FOUND
PYTHON2LIBS_VERSION_STRING PYTHON2_LIBRARIES PYTHON2_LIBRARY
PYTHON2_DEBUG_LIBRARIES PYTHON2_LIBRARY_DEBUG PYTHON2_INCLUDE_PATH
PYTHON2_INCLUDE_DIR PYTHON2_INCLUDE_DIR2 PYTHON2_PACKAGES_PATH)
find_python(3 "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR
PYTHON3INTERP_FOUND PYTHON3_EXECUTABLE PYTHON3_VERSION_STRING
PYTHON3_VERSION_MAJOR PYTHON3_VERSION_MINOR PYTHON3LIBS_FOUND
PYTHON3LIBS_VERSION_STRING PYTHON3_LIBRARIES PYTHON3_LIBRARY
PYTHON3_DEBUG_LIBRARIES PYTHON3_LIBRARY_DEBUG PYTHON3_INCLUDE_PATH
PYTHON3_INCLUDE_DIR PYTHON3_INCLUDE_DIR2 PYTHON3_PACKAGES_PATH)
if(PYTHON_DEFAULT_EXECUTABLE)
set(PYTHON_DEFAULT_AVAILABLE "TRUE")
elseif(PYTHON2INTERP_FOUND) # Use Python 2 as default Python interpreter
set(PYTHON_DEFAULT_AVAILABLE "TRUE")
set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON2_EXECUTABLE}")
elseif(PYTHON3INTERP_FOUND) # Use Python 2 as fallback Python interpreter (if there is no Python 2)
set(PYTHON_DEFAULT_AVAILABLE "TRUE")
set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON3_EXECUTABLE}")
endif()

View File

@ -1,20 +1,37 @@
API Changes {#apichanges}
===============
**IMPORTANT NOTICE**
Our **C++ header files** will change their extension from *.h* to *.hpp*. This
change is anticipated in the upcoming version and unfortunately will break
source compatibility with previous versions of UPM for every library. You will
need to update your code and change to the new extension format in your
`#include` directives.
Here's a list of other API changes made to the library that break source/binary
compatibility between releases:
* **grove<name>** Starting with UPM 1.0 the Grove libraries have been renamed
from *upm-grove<name>* to simply *upm-<name>*. Class names also match this new
format, with old classes marked as deprecated throughout the documentation.
List of affected libraries: grovecollision, groveehr, groveeldriver,
groveelectromagnet, groveemg, grovegprs, grovegsr, grovelinefinder, grovemd,
grovemoisture, groveo2, grovescam, grovespeaker, groveultrasonic, grovevdiv,
grovewater, grovewfs.
* **grove** As of UPM 1.0 the Grove classes for sensors in the starter kit are
being separated into individual libraries. The old classes will be deprecated
over time and eventually removed. Corresponding libraries have the grove
prefix removed. Affected classes are GroveButton, GroveLed, GroveLight,
GroveRelay, GroveRotary, GroveSlide and GroveTemp.
* The **ublox6** driver has been replaced with a generic implementation called
nmea_gps as of UPM 1.0. This driver should handle all generic serial GPS
devices that output NMEA data going forward. This new driver has been tested
with ublox6, DFRobot VK2828U7 (ublox7) and ublox LEA-6H GPS devices.
* **grove** Binary compatibility was broken for the GroveTemp class as of UPM
v0.7.3. C++ code using this class has to be recompiled.
* There were frequent misspellings of the word *Celsius* in the UPM
code. In some cases, these were in method names, which will cause
some API compatibility issues. These have all been corrected for UPM
versions after v.0.7.2.
* Our **C++ header files** changed their extension from *.h* to *.hpp* in
version 0.7.0, Intel provided examples and code samples also reflect this
change but you will need to modify your `#include` directives in existing
code.
* **my9221**, **groveledbar** and **grovecircularled** are now all part of the
same library (my9221) and new functionality was added going to v.0.5.1
* **stepmotor** driver API was changed significantly from v.0.4.1 to v.0.5.0
same library (my9221) and new functionality was added going to v.0.5.1.
* **stepmotor** driver API was changed significantly from v.0.4.1 to v.0.5.0.
* **eboled** library was greatly improved in version 0.4.0 and the `draw()`
function was removed in favor of a more complete GFX library implementation
function was removed in favor of a more complete GFX library implementation.

View File

@ -5,10 +5,21 @@ UPM uses cmake in order to make compilation relatively painless. Cmake runs
build out of tree so the recommended way is to clone from git and make a build/
directory.
**Dependencies**
* basic: libmraa, cmake, swig, pkgconfig, pthreads, librt
* bindings: python-dev, nodejs-dev, openjdk
* documentation: doxygen, graphviz, sphinx, yuidoc
* sensor specific: bacnet-mstp, modbus, openzwave, jpeg
This project depends on libmraa, so that needs to be installed first. Append
the install location of mraa pkgconfig to the following environment variable:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:.../mraa/build/lib/pkgconfig
~~~~~~~~~~~~~
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:.../mraa/build/lib/pkgconfig
~~~~~~~~~~~~~
If you are building the Java or Node.js bindings make sure you set the
`JAVA_HOME` and `NODE_PATH` environment variables respectively.
UPM will attempt to build all directories inside src/ and they must contain
individual CMakeLists.txt files.
@ -45,10 +56,18 @@ Cross-compiling on a different system:
-DCMAKE_CXX_FLAGS:STRING=-m32 -march=i586
-DCMAKE_C_FLAGS:STRING=-m32 -march=i586
~~~~~~~~~~~~~
Enabling Java module building
~~~~~~~~~~~~~
-DBUILDSWIGJAVA=ON
~~~~~~~~~~~~~
Building with an older version of swig (swig 2.0+) requires the disabling of javascript:
~~~~~~~~~~~~~
-DBUILDSWIGNODE=OFF
~~~~~~~~~~~~~
Generating python3 modules instead of python2.7
~~~~~~~~~~~~~
-DBUILDPYTHON3=ON
~~~~~~~~~~~~~
Disabling python module building
~~~~~~~~~~~~~
-DBUILDSWIGPYTHON=OFF
@ -57,7 +76,7 @@ Setting the python library to use:
~~~~~~~~~~~~~
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/libpython2.7.so.1.0
~~~~~~~~~~~~~
Building doxygen doc
Building documentation
~~~~~~~~~~~~~
-DBUILDDOC=ON
~~~~~~~~~~~~~
@ -65,12 +84,16 @@ Build C++ example binaries
~~~~~~~~~~~~~
-DBUILDEXAMPLES=ON
~~~~~~~~~~~~~
Build Java examples
~~~~~~~~~~~~~
-DBUILDJAVAEXAMPLES=ON
~~~~~~~~~~~~~
If you intend to turn on all the options and build everything at once (C++,
Node, Python and Documentation) you will have to edit the src/doxy2swig.py file
and change the line endings from Windows style to Linux format. This has to be
repeated every time to sync with the master branch since our Github repository
stores files using CR LF line breaks.
If you intend to turn on all the options and build everything at once
(C++, Java, Node, Python and Documentation) you will have to edit the
src/doxy2swig.py file and change the line endings from Windows style to Linux
format. This has to be repeated every time to sync with the master branch since
our Github repository stores files using CR LF line breaks.
You can also generate the include and lib directories containing all the sensor
headers and library files respectively with *make install*. Further, you may

View File

@ -4,6 +4,80 @@ Changelog {#changelog}
Here's a list summarizing some of the key undergoing changes to our library
from earlier versions:
### v1.0.1
* Warnings as errors enabled for C/CXX (fixed warnings from -Wall and others)
* Fix for C/CXX compile flag append issue #485
* C sensor libraries for: my9221, otp538u, guvas12d, ppd42ns
* New sensor: ms5803
### v1.0.0
* Added approximately 50 C sources for UPM drivers that can be used on both
Unix and RTOS boards
* Provided generic alternatives to the Grove set of classes as they will be
deprecated over time and eventually removed
* UPM modules are now being packed and published on NPM as sources rather than
binaries to enhance compatibility with various boards and systems
* Build both python2 and python3 modules if the corresponding python libs are
available and removed cmake BUILDPYTHON3 switch
* Converted python examples to run on both python2 and python3
* Added 'upm' hierarchy to python module install path which changes the way
UPM modules are imported
Example:
old: import pyupm_dfrph
new: from upm import pyupm_dfrph
or
import upm.pyupm_dfrph
* Added ctests for consistancy checking UPM repo as well as sanity checking
for python2/3 modules and examples
* Various documentation and driver fixes throughout
* New sensors: nmea_gps, mma7361, bh1750, hka5, dfrorp, dfrec, sht1x
### v0.8.0
* Extended l3gd20 driver to support I2C connections in addition to IIO
* Updated ads1x15, mcp9808 and ssd1306 I2C drivers to not throw a fatal
exception if they fail to set a different I2C speed
* Added extra functionality to apa102 driver, backlight control to jhd1313m1
LCDs and fixed htu21d
* Improved documentation with build dependencies, refreshed the list of known
limitations and simplified the component name for a few sensors
### v0.7.3
* Fixed several existing drivers and updated Grove Temperature sensor to use
new formula for v1.1+ by default
* Separated codebase for upm_grove module that bundles some of the starter kit
sensors into individual source files
* Documentation and doxygen tag updates with correct spelling for Celsius in
several places, this also affects API compatibility
* Removed superfluous BUILDSWIG option, some build recipes might be impacted
* New sensor: ms5611
### v0.7.2
* Mraa 1.1.1 required changes to UPM drivers and examples for IIO core
kernel support
* Rev'ed libmraa requirement to 1.1.1
### v0.7.1
* Fix for building python2 vs python3 bindings
* Fixes for jhd1313m1 row/font size and reset
* Added bacnet utility class
* New sensors: bmx055, bmi055, bmc160, bma250e, bmg150, bmm150, t8100, tb7300
### v0.7.0
* C++ header files have been renamed from *.h to *.hpp along with all Intel
provided examples and code samples to allow for native C drivers
* Updated driver compatibility to new MRAA 1.0 API
* First sensor implementations for our newly added Dallas One Wire support
* Several fixes based on issues reported on Github
* Changed SWIG linking strategy, more robust Travis CI build checks
* New sensors: ds2413, ds18b20, bmp280, bno055, l3gd20
### v0.6.2
* Added a generic driver for taking snapshots from an USB camera device

View File

@ -66,7 +66,7 @@ Here's an example (disregard the "@verbatim" tags in your actual code):
- `<component-kit>` Specifies if the sensor is part of a kit. *Optional*
Existing groups that can be used for the manufacturer, connection, category and
kit tags are found in the src/upm.h file.
kit tags are found in the *src/groups.md* file.
Optionally, a small representative image can be placed in the "docs/images"
subfolder and linked with the "@image" tag.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/icons/iss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
docs/images/1wire.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

0
docs/images/a110x.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

0
docs/images/ad8232.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 222 KiB

0
docs/images/adafruitms1438.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

0
docs/images/adafruitss.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 173 KiB

0
docs/images/adc121c021.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

0
docs/images/apds9002.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

0
docs/images/at42qt1070.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

0
docs/images/biss0001.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

BIN
docs/images/button.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

0
docs/images/buzzer.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
docs/images/circularled.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

0
docs/images/cjq4435.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

BIN
docs/images/collision.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

0
docs/images/ds1307.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

0
docs/images/ecs1030.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

BIN
docs/images/ehr.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
docs/images/eldriver.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

0
docs/images/groveemg.jpg → docs/images/emg.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

0
docs/images/enc03r.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

0
docs/images/flex.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
docs/images/gp2y0a.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

BIN
docs/images/gprs.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

0
docs/images/grovebutton.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 164 KiB

0
docs/images/grovecircularled.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

0
docs/images/grovecollision.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

0
docs/images/groveehr.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

0
docs/images/groveeldriver.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
docs/images/groveelectromagnet.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
docs/images/grovegprs.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

0
docs/images/groveled.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

0
docs/images/grovelight.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

0
docs/images/grovelinefinder.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

0
docs/images/groveloudness.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

0
docs/images/grovemd.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

0
docs/images/grovemoisture.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

0
docs/images/groveo2.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

0
docs/images/groverelay.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

0
docs/images/grovescam.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 135 KiB

0
docs/images/grovespeaker.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

0
docs/images/grovetemp.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

0
docs/images/grovevdiv.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 105 KiB

0
docs/images/grovewfs.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

0
docs/images/grovegsr.jpg → docs/images/gsr.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

0
docs/images/guvas12d.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

0
docs/images/hm11.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

0
docs/images/hp20x.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 929 KiB

After

Width:  |  Height:  |  Size: 929 KiB

0
docs/images/ina132.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
docs/images/isd1820.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
docs/images/joystick12.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

0
docs/images/l298.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 169 KiB

0
docs/images/ldt0028.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

BIN
docs/images/led.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
docs/images/light.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
docs/images/linefinder.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
docs/images/loudness.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

0
docs/images/lpd8806.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

0
docs/images/m24lr64e.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

0
docs/images/max31855.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 196 KiB

0
docs/images/maxsonarez.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

BIN
docs/images/md.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

0
docs/images/mhz16.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

0
docs/images/mlx90614.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

0
docs/images/mma7455.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

0
docs/images/mma7660.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

BIN
docs/images/moisture.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

0
docs/images/nunchuck.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

BIN
docs/images/o2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

0
docs/images/otp538u.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

BIN
docs/images/relay.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

0
docs/images/rgbringcoder.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

BIN
docs/images/rotary.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/images/scam.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

0
docs/images/si114x.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 191 KiB

After

Width:  |  Height:  |  Size: 191 KiB

View File

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

0
docs/images/sm130.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

BIN
docs/images/speaker.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

0
docs/images/st7735.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 149 KiB

0
docs/images/stepmotor.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 198 KiB

0
docs/images/sx6119.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

0
docs/images/ta12200.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

0
docs/images/tcs3414cs.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Some files were not shown because too many files have changed in this diff Show More