Compare commits

...

60 Commits

Author SHA1 Message Date
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
d355f76226 upm: v0.6.2
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-19 16:42:19 -07:00
4f6be750c7 vcap: Initial implementation
This UPM module captures a still frame from a Linux V4L device, such
as a USB webcam, and and then allows you to save it as a JPEG image
into a file.

The camera and driver in use must support streaming, mmap-able buffers
and must provide data in YUYV format.  This should encompass most
video cameras out there.  It has been tested with a few off the shelf
USB cameras without any problems.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-19 15:38:48 -07:00
bf7d7d1bda examples: changed default bus from 6 to 0 for SSD1306 examples
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-18 16:27:11 -07:00
9acc752074 java: add dependency on java targets for java examples
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-15 10:01:55 -07:00
b6b7d892c2 cmake: fix RPM generation when VERSION_COMMIT is empty string
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-15 10:01:27 -07:00
1ca8d100ea e50hx: add bacnetmstp includes so example can build
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-15 10:01:02 -07:00
96f1afffe3 e50hx: remove add_dependency() call from CMakeLists.txt
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-15 10:00:38 -07:00
899d873cbc e50hx: Initial implementation
This driver requires the UPM BACNETMSTP driver (PR #385) to be merged
first.

This module implements support for the Veris E50H2 and E50H5
BACnet Energy Meters.

From the datasheet: The E50H5 BACnet MS/TP DIN Rail Meter with
Data Logging combines exceptional performance and easy
installation to deliver a cost-effective solution for power
monitoring applications. Native serial communication via BACnet
MS/TP provides complete accessibility of all measurements to your
Building Automation System. The data logging capability protects
data in the event of a power failure. The E50H5 can be easily
installed on standard DIN rail, surface mounted or contained in
an optional NEMA 4 enclosure, as needed. The front-panel LCD
display makes device installation and setup easy and provides
local access to the full set of detailed measurements.

This module was developed using the upm::BACNETMSTP module, based
on libbacnet-stack 0.8.3.  Both libbacnet 0.8.3 and the
upm::BACNETMSTP libraries must be present in order to build this
module.  This driver was developed on the E50H5.  The Trend Log
functionality is not currently supported.

The Binary Input Objects are also not supported as these are only
used for the Alarm bits which are already available from Analog
Input Object 52 as an alarm bitfield incorporating all of the
supported alarm indicators.

It was connected using an RS232->RS485 interface.  You cannot use
the built in MCU TTL UART pins for accessing this device -- you
must use a full Serial RS232->RS485 or USB-RS485 interface
connected via USB.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-15 10:00:04 -07:00
dc8be495a9 docs: fix spelling errors
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-15 09:59:29 -07:00
c7b5204fe4 bacnetmstp: initial BACnet MS/TP implementation
This driver is implemented as a singleton due to it's reliance on the
bacnet-stack implementation.  This implementation does not currently
support multiple BACnet networks at the same time, though in the
future it might, depending on the future of bacnet-stack development.
The version of bacnet-stack used in developing this driver was 0.8.3.

This driver is not intended to be used directly by end users, rather
it is intended for UPM drivers supporting specific BACnet devices,
such as the Veris E50H5 Energy Meter.

Unfortunately, this means that a process can only support a single
RS-485 BACnet network, though you can support multiple devices on that
network.

No examples are provided.  Please look at the E50HX driver for an
example of how to use this class in a BACnet MS/TP device driver if
you want to write one.

When initialized, the bacnet-stack library will attach to your RS-485
based BACnet network, and start a Master Finite State Machine (FSM) in
a separate thread.  This thread will handle the details of token
passing and locating other Masters in the network (Poll For Master).

This driver will appear as a BACnet Master device on the BACnet
network, which supports only the required Device Object and any
required services (readProp) and Device Object properties.

When initializing the driver, it is important to select a Device
Object Instance ID that is unique on your BACnet network.  This is the
unique identifier that will be used to identify your Master to the
rest of the BACnet network.

In addition, it may take some time after initialization before you
will be able to communicate on the network, as the first thing that
has to happen is that all Masters on the network need to be identified
(handled by the Master FSM) and a token needs to be received before
your Master can begin transmitting (making requests).  This may take a
couple of minutes on a large network.

You can speed this process up by specifying a maxMaster (to
initMaster()) that is smaller than the default (127) -- but only if
you are CERTAIN that there are no masters with a MAC address higher
than the value you choose.  If you fail to follow this rule, you may
introduce hard to identify token passing problems on the network for
yourself and other BACnet Masters.

Currently, this driver only supports the readProperty and
writeProperty requests to other BACnet devices.  In addition, array
property reading and writing is not currently supported.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-15 09:58:36 -07:00
527615758a cmake: Fixed builddoc flow for javascript documentation
Fixed a few small typos for handling node as well as a
small conditional for building PYTHON.

    * Fixed some NODE_EXECUTABLE->NODEJS_EXECUTABLE instances
    which must have been missed from a previous commit.

    * Added a qualifier for python documentation so both
    BUILDSWIGPYTHON AND BUILDSWIG must be set to add
    dependencies for pydoc.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-04-12 16:56:55 -07:00
16b6fcf807 cmake: set CMAKE_INSTALL_LIBDIR before using it
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-06 12:51:20 -07:00
5a9f234a3e cmake: Solved issue with nodejs installation path
Changed ${LIB_INSTALL_DIR} with lib, because the variable expands to
/usr/lib, making the install path /usr/usr/lib/node_modules, which
is incorrect. Now the install path is /usr/lib/node_modules.

Signed-off-by: Andrei Vasiliu <andrei.vasiliu@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-06 12:45:14 -07:00
c7bd37b322 docs: added new API compatibility section
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-04-06 12:44:56 -07:00
edcaed90e6 extdep: Removed add_dependencies call from CMakeLists
Small change to get rid of a warning in newer cmake versions.

Versions of cmake (>= 3.0) throw a warning on the add_dependecy
method for non-existant dependencies (add_dependency call before
target_link_libraries call).

Removed the call to add_dependency since target_link_libraries should
provide the same functionality for ozw and modbus dependencies.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-04-06 12:44:35 -07:00
1278 changed files with 15347 additions and 6922 deletions

View File

@ -1,10 +1,21 @@
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
- MRAA_INSTALL=$MRAA_ROOT/install
- UPM_ROOT=$TRAVIS_BUILD_DIR
- UPM_BUILD=$UPM_ROOT/build
- UPM_INSTALL=$UPM_ROOT/install
- 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 apt-get update -qq
@ -12,27 +23,24 @@ install:
- 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
- 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=OFF -DFIRMATA=ON -DENABLEEXAMPLES=OFF -DCMAKE_INSTALL_PREFIX:PATH=$MRAA_INSTALL $MRAA_ROOT && make install
- cd $UPM_ROOT && mkdir $UPM_BUILD && cd $_ && PKG_CONFIG_PATH=$MRAA_INSTALL/lib/pkgconfig cmake -DNODE_ROOT_DIR:PATH="${NODE_ROOT_DIR}" -DBUILDSWIGJAVA=$BUILDJAVA -DBUILDEXAMPLES=ON -DBUILDJAVAEXAMPLES=$BUILDJAVA -DCMAKE_INSTALL_PREFIX:PATH=$UPM_INSTALL .. && make install
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

@ -10,27 +10,22 @@ 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)
pkg_check_modules (MRAA REQUIRED mraa>=1.0.0)
message (INFO " found mraa version: ${MRAA_VERSION}")
# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
# Older cmake might not pick CMAKE_INSTALL_LIBDIR right
if (CMAKE_INSTALL_LIBDIR)
set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation path for libraries")
else ()
set (LIB_INSTALL_DIR "lib" CACHE PATH "Installation path for libraries")
endif ()
# Set CMAKE_LIB_INSTALL_DIR if not defined
# Set CMAKE_INSTALL_LIBDIR if not defined
include(GNUInstallDirs)
set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation path for libraries")
# 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.1-dirty")
set (VERSION "v0.7.0-dirty")
endif ()
message (INFO " - UPM Version ${VERSION}")
@ -83,6 +78,11 @@ include (TargetArch)
target_architecture (DETECTED_ARCH)
message( INFO " - Target arch is ${DETECTED_ARCH}")
#-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
if (ENABLECXX11)
include(CheckCXXCompilerFlag)
@ -157,9 +157,9 @@ if (BUILDDOC)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxy/node/${JSDOC_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${JSDOC_FILE} COPYONLY)
endforeach()
add_custom_target(jsdoc ALL
COMMAND ${NODE_EXECUTABLE} docgen -m upm -i xml -t ${CMAKE_CURRENT_SOURCE_DIR}/src -g ../../
COMMAND ${NODEJS_EXECUTABLE} docgen -m upm -i xml -t ${CMAKE_CURRENT_SOURCE_DIR}/src -g ../../
COMMAND ${YUIDOC_EXECUTABLE} -C --no-sort --helpers generators/yuidoc/helper.js --themedir generators/yuidoc/tmpl -o html/node jsdoc/yuidoc/upm
COMMAND ${NODE_EXECUTABLE} tolower -i html/node
COMMAND ${NODEJS_EXECUTABLE} tolower -i html/node
DEPENDS doc
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Yuidoc" VERBATIM
@ -210,12 +210,17 @@ if (RPM)
set(CPACK_PACKAGE_VERSION ${VERSION})
set(CPACK_GENERATOR "RPM")
set(CPACK_PACKAGE_NAME "upm")
set(upm_PACKAGE_ON_TAG ".")
if ("${VERSION_COMMIT}" STREQUAL "")
set(upm_PACKAGE_ON_TAG "")
endif()
set(CPACK_PACKAGE_VERSION
"${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH}.${upm_PACKAGE_ON_TAG}${VERSION_COMMIT}")
"${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH}${upm_PACKAGE_ON_TAG}${VERSION_COMMIT}")
set(CPACK_PACKAGE_CONTACT "Intel IoT-Devkit")
set(CPACK_PACKAGE_VENDOR "Intel IoT-Devkit")
set(CPACK_RPM_PACKAGE_REQUIRES "mraa >= ${MRAA_VERSION}")
set(CPACK_RPM_PACKAGE_PROVIDES "${CPACK_PACKAGE_NAME}-devel")
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
EXECUTE_PROCESS(COMMAND rpm --showrc
COMMAND grep -E "dist[[:space:]]*\\."
COMMAND sed -e "s/^.*dist\\s*\\.//"

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](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
@ -114,6 +114,14 @@ API Documentation
<a href="http://iotdk.intel.com/docs/master/upm/python"><img src="docs/icons/python.png"/></a>
<a href="http://iotdk.intel.com/docs/master/upm/node"><img src="docs/icons/node.png"/></a>
### API Compatibility
Even if we try our best not to, every once in a while we are forced to modify
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** changed extension from *.h* to *.hpp*!
### Changelog
Version changelog [here](docs/changelog.md).

View File

@ -94,4 +94,4 @@ if (NODEJS_EXECUTABLE)
mark_as_advanced (NODEJS_EXECUTABLE)
endif ()
mark_as_advanced (NODE_EXECUTABLE)
mark_as_advanced (NODEJS_EXECUTABLE)

15
docs/apichanges.md Normal file
View File

@ -0,0 +1,15 @@
API Changes {#apichanges}
===============
Here's a list of other API changes made to the library that break source/binary
compatibility between releases:
* 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
* **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

View File

@ -4,6 +4,26 @@ Changelog {#changelog}
Here's a list summarizing some of the key undergoing changes to our library
from earlier versions:
### 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
* New API changes section in documentation to let users know when the UPM API
gets modified
* Fixed some spelling errors and improved JavaScript documentation builds with
newer versions of YUI and Node
* Enhanced Cmake scripts and the build process
* New sensors: vcap, e50hx
### v0.6.1
* Fixed library build process for different configurations across multiple

View File

@ -13,7 +13,7 @@ This is a spi module so we will use the mraa spi functions to build our module.
First thing to do is to create a tree structure like this in upm/src/max31855:
* max31855.cxx
* max31855.h
* max31855.hpp
* jsupm_max31855.i
* pyupm_max31855.i
* CMakeLists.txt
@ -36,11 +36,11 @@ used swig wrappers for UPM sensors, it's not obligatory but recommended.
### API
Then we create the header (max31855.h) , a very simple header in our case we
Then we create the header (max31855.hpp) , a very simple header in our case we
will have only a very basic api. We provide a getTemp() function which will
return the same type as in the arduino library, a double.
@snippet max31855.h Interesting
@snippet max31855.hpp Interesting
Note that the header contains both the io that we will use, the gpio is in this
case used as the chip select pin.

View File

@ -14,16 +14,16 @@ example is explained in detail on @ref max31855
### CmakeLists.txt
By default you need a header called modulename.h and a C++ file called
By default you need a header called modulename.hpp and a C++ file called
modulename.cxx. You can have multiple headers and source files. Only public
headers need to be added to module_h and all source files need to be in
headers need to be added to module_hpp and all source files need to be in
module_src.
~~~~~~~~~~~
set (libname "modulename")
set (libdescription "Module Description")
set (module_src ${libname}.cxx)
set (module_h ${libname}.h)
set (module_hpp ${libname}.hpp)
upm_module_init()
~~~~~~~~~~~

View File

@ -859,6 +859,9 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
# bmi160 driver contains code provided by bosch. This source contains
# tags which are picked up by doxygen (namely \mainpage) and
# incorrectly get added to docs.
EXCLUDE_PATTERNS = bosch_*
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names

View File

@ -241,7 +241,6 @@ add_example (rhusb)
add_example (apds9930)
add_example (kxcjk1013)
add_example (ssd1351)
add_example (bme280)
add_example (ds1808lc)
add_example (hlg150h)
add_example (lp8860)
@ -258,6 +257,18 @@ add_example (smartdrive)
if (HAVE_FIRMATA)
add_example (curieimu)
endif ()
if (BACNET_FOUND)
include_directories(${BACNET_INCLUDE_DIRS})
# we need access to bacnetmstp headers too
include_directories(${PROJECT_SOURCE_DIR}/src/bacnetmstp)
add_example (e50hx)
endif()
add_example (vcap)
add_example (ds2413)
add_example (ds18b20)
add_example (bmp280)
add_example (bno055)
add_example (l3gd20)
# These are special cases where you specify example binary, source file and module(s)
include_directories (${PROJECT_SOURCE_DIR}/src)
@ -276,10 +287,11 @@ add_custom_example (ak8975-example ak8975.cxx mpu9150)
add_custom_example (mpu9250-example mpu9250.cxx mpu9150)
add_custom_example (groveledbar-example groveledbar.cxx my9221)
add_custom_example (grovecircularled-example grovecircularled.cxx my9221)
add_custom_example (temperature-sensor-example temperature-sensor.cxx "si7005;bmp180;bme280")
add_custom_example (temperature-sensor-example temperature-sensor.cxx "si7005;bmpx8x;bme280")
add_custom_example (humidity-sensor-example humidity-sensor.cxx "si7005;bme280")
add_custom_example (pressure-sensor-example pressure-sensor.cxx "bmp180;bme280")
add_custom_example (pressure-sensor-example pressure-sensor.cxx "bmpx8x;bme280")
add_custom_example (co2-sensor-example co2-sensor.cxx "t6713")
add_custom_example (adc-example adc-sensor.cxx "ads1x15")
add_custom_example (light-sensor-example light-sensor.cxx "si1132;max44009")
add_custom_example (light-controller-example light-controller.cxx "lp8860;ds1808lc;hlg150h")
add_custom_example (bme280-example bme280.cxx bmp280)

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "a110x.h"
#include "a110x.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "a110x.h"
#include "a110x.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "ad8232.h"
#include "ad8232.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <iostream>
#include "adafruitms1438.h"
#include "adafruitms1438.hpp"
using namespace std;
using namespace upm;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <iostream>
#include "adafruitms1438.h"
#include "adafruitms1438.hpp"
using namespace std;
using namespace upm;

View File

@ -33,7 +33,7 @@
*/
#include <iostream>
#include "adafruitss.h"
#include "adafruitss.hpp"
#include <unistd.h>
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include "ads1015.h"
#include "ads1015.hpp"
#include "mraa/gpio.hpp"
#define EDISON_I2C_BUS 1

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <iostream>
#include "adc121c021.h"
#include "adc121c021.hpp"
using namespace std;

View File

@ -26,8 +26,8 @@
#include <iostream>
#include <unistd.h>
#include "ads1015.h"
#include "ads1115.h"
#include "ads1015.hpp"
#include "ads1115.hpp"

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "adxl335.h"
#include "adxl335.hpp"
using namespace std;

View File

@ -23,7 +23,7 @@
*/
#include <unistd.h>
#include "adxl345.h"
#include "adxl345.hpp"
int
main(int argc, char **argv)

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "adxrs610.h"
#include "adxrs610.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "mpu9150.h"
#include "mpu9150.hpp"
using namespace std;

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include "am2315.h"
#include "am2315.hpp"
volatile int doWork = 0;

View File

@ -22,7 +22,7 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "apa102.h"
#include "apa102.hpp"
#include <iostream>
#include <signal.h>
#include <unistd.h>

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "apds9002.h"
#include "apds9002.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "apds9930.h"
#include "apds9930.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <iostream>
#include "at42qt1070.h"
#include "at42qt1070.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "biss0001.h"
#include "biss0001.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "bma220.h"
#include "bma220.hpp"
using namespace std;

View File

@ -1,6 +1,6 @@
/*
* Author: Henry Bruce <henry.bruce@intel.com>
* Copyright (c) 2015 Intel Corporation.
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@ -24,28 +24,55 @@
#include <unistd.h>
#include <iostream>
#include "bme280.h"
#include <signal.h>
#define FT4222_I2C_BUS 0
#include "bme280.hpp"
int main ()
using namespace std;
using namespace upm;
int shouldRun = true;
void sig_handler(int signo)
{
try {
upm::BME280* bme280 = new upm::BME280 (mraa_get_sub_platform_id(FT4222_I2C_BUS));
while (true) {
int temperature = bme280->getTemperatureCelcius();
int humidity = bme280->getHumidityRelative();
int pressure = bme280->getPressurePa();
std::cout << "Temperature = " << temperature << "C" << std::endl;
std::cout << "Humidity = " << humidity << "%" << std::endl;
std::cout << "Pressure = " << pressure << "Pa" << std::endl;
sleep(1);
}
delete bme280;
} catch (std::exception& e) {
std::cerr << e.what() << std::endl;
}
return 0;
if (signo == SIGINT)
shouldRun = false;
}
int main(int argc, char **argv)
{
signal(SIGINT, sig_handler);
//! [Interesting]
// Instantiate a BME280 instance using default i2c bus and address
upm::BME280 *sensor = new upm::BME280();
// For SPI, bus 0, you would pass -1 as the address, and a valid pin for CS:
// BME280(0, -1, 10);
while (shouldRun)
{
// update our values from the sensor
sensor->update();
// we show both C and F for temperature
cout << "Compensation Temperature: " << sensor->getTemperature()
<< " C / " << sensor->getTemperature(true) << " F"
<< endl;
cout << "Pressure: " << sensor->getPressure() << " Pa" << endl;
cout << "Computed Altitude: " << sensor->getAltitude() << " m" << endl;
cout << "Humidity: " << sensor->getHumidity() << " %RH" << endl;
cout << endl;
sleep(1);
}
//! [Interesting]
cout << "Exiting..." << endl;
delete sensor;
return 0;
}

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "bmi160.h"
#include "bmi160.hpp"
using namespace std;

77
examples/c++/bmp280.cxx Normal file
View File

@ -0,0 +1,77 @@
/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "bmp280.hpp"
using namespace std;
using namespace upm;
int shouldRun = true;
void sig_handler(int signo)
{
if (signo == SIGINT)
shouldRun = false;
}
int main(int argc, char **argv)
{
signal(SIGINT, sig_handler);
//! [Interesting]
// Instantiate a BMP280 instance using default i2c bus and address
upm::BMP280 *sensor = new upm::BMP280();
// For SPI, bus 0, you would pass -1 as the address, and a valid pin for CS:
// BMP280(0, -1, 10);
while (shouldRun)
{
// update our values from the sensor
sensor->update();
// we show both C and F for temperature
cout << "Compensation Temperature: " << sensor->getTemperature()
<< " C / " << sensor->getTemperature(true) << " F"
<< endl;
cout << "Pressure: " << sensor->getPressure() << " Pa" << endl;
cout << "Computed Altitude: " << sensor->getAltitude() << " m" << endl;
cout << endl;
sleep(1);
}
//! [Interesting]
cout << "Exiting..." << endl;
delete sensor;
return 0;
}

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include "bmpx8x.h"
#include "bmpx8x.hpp"
#include <signal.h>
int doWork = 0;

129
examples/c++/bno055.cxx Normal file
View File

@ -0,0 +1,129 @@
/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "bno055.hpp"
using namespace std;
int shouldRun = true;
void sig_handler(int signo)
{
if (signo == SIGINT)
shouldRun = false;
}
int main(int argc, char **argv)
{
signal(SIGINT, sig_handler);
//! [Interesting]
// Instantiate an BNO055 using default parameters (bus 0, addr
// 0x28). The default running mode is NDOF absolute orientation
// mode.
upm::BNO055 *sensor = new upm::BNO055();
// First we need to calibrate....
cout << "First we need to calibrate. 4 numbers will be output every"
<< endl;
cout << "second for each sensor. 0 means uncalibrated, and 3 means"
<< endl;
cout << "fully calibrated."
<< endl;
cout << "See the UPM documentation on this sensor for instructions on"
<< endl;
cout << "what actions are required to calibrate."
<< endl;
cout << endl;
// do the calibration...
while (shouldRun && !sensor->isFullyCalibrated())
{
int mag, acc, gyr, sys;
sensor->getCalibrationStatus(&mag, &acc, &gyr, &sys);
cout << "Magnetometer: " << mag
<< " Accelerometer: " << acc
<< " Gyroscope: " << gyr
<< " System: " << sys
<< endl;
sleep(1);
}
cout << endl;
cout << "Calibration complete." << endl;
cout << endl;
// now output various fusion data every 250 milliseconds
while (shouldRun)
{
float w, x, y, z;
sensor->update();
sensor->getEulerAngles(&x, &y, &z);
cout << "Euler: Heading: " << x
<< " Roll: " << y
<< " Pitch: " << z
<< " degrees"
<< endl;
sensor->getQuaternions(&w, &x, &y, &z);
cout << "Quaternion: W: " << w
<< " X: " << x
<< " Y: " << y
<< " Z: " << z
<< endl;
sensor->getLinearAcceleration(&x, &y, &z);
cout << "Linear Acceleration: X: " << x
<< " Y: " << y
<< " Z: " << z
<< " m/s^2"
<< endl;
sensor->getGravityVectors(&x, &y, &z);
cout << "Gravity Vector: X: " << x
<< " Y: " << y
<< " Z: " << z
<< " m/s^2"
<< endl;
cout << endl;
usleep(250000);
}
//! [Interesting]
cout << "Exiting..." << endl;
delete sensor;
return 0;
}

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "buzzer.h"
#include "buzzer.hpp"
int

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "cjq4435.h"
#include "cjq4435.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include "t6713.h"
#include "t6713.hpp"
#define EDISON_I2C_BUS 1
#define FT4222_I2C_BUS 0

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include "cwlsxxa.h"
#include "cwlsxxa.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "dfrph.h"
#include "dfrph.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include "ds1307.h"
#include "ds1307.hpp"
using namespace std;

View File

@ -3,7 +3,7 @@
#include <unistd.h>
#include <iostream>
#include <string>
#include "ds1808lc.h"
#include "ds1808lc.hpp"
#define EDISON_I2C_BUS 1 // Edison I2C-1
#define DS1808_GPIO_PWR 15 // Edison GP165

81
examples/c++/ds18b20.cxx Normal file
View File

@ -0,0 +1,81 @@
/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "ds18b20.hpp"
using namespace std;
bool shouldRun = true;
void sig_handler(int signo)
{
if (signo == SIGINT)
shouldRun = false;
}
int main(int argc, char **argv)
{
signal(SIGINT, sig_handler);
//! [Interesting]
cout << "Initializing..." << endl;
// Instantiate an DS18B20 instance using the default values (uart 0)
upm::DS18B20 sensor;
// locate and setup our devices
sensor.init();
cout << "Found " << sensor.devicesFound() << " device(s)" << endl;
cout << endl;
// bail if we didn't find anything
if (!sensor.devicesFound())
return 1;
// update and print available values every second
while (shouldRun)
{
// update our values for the first sensor
sensor.update(0);
// we show both C and F for temperature for the first sensor
cout << "Temperature: " << sensor.getTemperature(0)
<< " C / " << sensor.getTemperature(0, true) << " F"
<< endl;
sleep(1);
}
cout << "Exiting..." << endl;
//! [Interesting]
return 0;
}

59
examples/c++/ds2413.cxx Normal file
View File

@ -0,0 +1,59 @@
/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <iostream>
#include <stdio.h>
#include "ds2413.hpp"
using namespace std;
using namespace upm;
int main(int argc, char **argv)
{
//! [Interesting]
// Instantiate a DS2413 Module on a Dallas 1-wire bus connected to UART 0
upm::DS2413* sensor = new upm::DS2413(0);
// find all of the DS2413 devices present on the bus
sensor->init();
// how many devices were found?
cout << "Found "<< sensor->devicesFound() << " device(s)" << endl;
// read the gpio and latch values from the first device
// the lower 4 bits are of the form:
// <gpioB latch> <gpioB value> <gpioA latch> <gpioA value>
cout << "GPIO device 0 values: " << sensor->readGpios(0) << endl;
// set the gpio latch values of the first device
cout << "Setting GPIO latches to on" << endl;
sensor->writeGpios(0, 0x03);
cout << "Exiting..." << endl;
delete sensor;
//! [Interesting]
return 0;
}

112
examples/c++/e50hx.cxx Normal file
View File

@ -0,0 +1,112 @@
/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "e50hx.hpp"
using namespace std;
using namespace upm;
bool shouldRun = true;
void sig_handler(int signo)
{
if (signo == SIGINT)
shouldRun = false;
}
int main(int argc, char **argv)
{
signal(SIGINT, sig_handler);
//! [Interesting]
// You will need to edit this example to conform to your site and your
// devices, specifically the Device Object Instance ID passed to the
// constructor, and the arguments to initMaster() that are
// appropriate for your BACnet network.
string defaultDev = "/dev/ttyUSB0";
// if an argument was specified, use it as the device instead
if (argc > 1)
defaultDev = string(argv[1]);
cout << "Using device " << defaultDev << endl;
cout << "Initializing..." << endl;
// Instantiate an E50HX object for an E50HX device that has 1075425
// as it's unique Device Object Instance ID. NOTE: You will
// certainly want to change this to the correct value for your
// device(s).
E50HX *sensor = new E50HX(1075425);
// Initialize our BACnet master, if it has not already been
// initialized, with the device and baudrate, choosing 1000001 as
// our unique Device Object Instance ID, 2 as our MAC address and
// using default values for maxMaster and maxInfoFrames
sensor->initMaster(defaultDev, 38400, 1000001, 2);
// Uncomment to enable debugging output
// sensor->setDebug(true);
cout << endl;
cout << "Device Description: " << sensor->getDescription() << endl;
cout << "Device Location: " << sensor->getLocation() << endl;
cout << endl;
// update and print a few values every 5 seconds
while (shouldRun)
{
cout << "System Voltage: "
<< sensor->getAnalogValue(E50HX::AV_System_Voltage)
<< " " << sensor->getAnalogValueUnits(E50HX::AV_System_Voltage)
<< endl;
cout << "System Type: "
<< sensor->getAnalogValue(E50HX::AV_System_Type)
<< endl;
cout << "Energy Consumption: " << sensor->getAnalogInput(E50HX::AI_Energy)
<< " " << sensor->getAnalogInputUnits(E50HX::AI_Energy)
<< endl;
cout << "Power Up Counter: "
<< sensor->getAnalogInput(E50HX::AI_Power_Up_Count)
<< endl;
cout << endl;
sleep(5);
}
cout << "Exiting..." << endl;
delete sensor;
//! [Interesting]
return 0;
}

View File

@ -23,7 +23,7 @@
*/
#include <iostream>
#include "eboled.h"
#include "eboled.hpp"
using namespace std;

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include <stdlib.h>
#include "ecs1030.h"
#include "ecs1030.hpp"
int is_running = 0;
upm::ECS1030 *sensor = NULL;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "enc03r.h"
#include "enc03r.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include "es08a.h"
#include "es08a.hpp"
#include <signal.h>
#include <stdlib.h>

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "flex.h"
#include "flex.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "gp2y0a.h"
#include "gp2y0a.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include "grove.h"
#include "grove.hpp"
int
main(int argc, char **argv)

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grovecircularled.h"
#include "grovecircularled.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <iostream>
#include <unistd.h>
#include <signal.h>
#include "grovecollision.h"
#include "grovecollision.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "groveehr.h"
#include "groveehr.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <iostream>
#include <unistd.h>
#include <signal.h>
#include "groveeldriver.h"
#include "groveeldriver.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <iostream>
#include <time.h>
#include <signal.h>
#include "groveelectromagnet.h"
#include "groveelectromagnet.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "groveemg.h"
#include "groveemg.hpp"
using namespace std;

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include <stdio.h>
#include "grovegprs.h"
#include "grovegprs.hpp"
using namespace std;
using namespace upm;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grovegsr.h"
#include "grovegsr.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grove.h"
#include "grove.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include "grove.h"
#include "grove.hpp"
int
main(int argc, char **argv)

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "groveledbar.h"
#include "groveledbar.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include "grove.h"
#include "grove.hpp"
int
main(int argc, char **argv)

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grovelinefinder.h"
#include "grovelinefinder.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <iostream>
#include "grovemd.h"
#include "grovemd.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <iostream>
#include "grovemd.h"
#include "grovemd.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grovemoisture.h"
#include "grovemoisture.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "groveo2.h"
#include "groveo2.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include "grove.h"
#include "grove.hpp"
int
main(int argc, char **argv)

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <iomanip>
#include "grove.h"
#include "grove.hpp"
using namespace std;

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include <stdio.h>
#include "grovescam.h"
#include "grovescam.hpp"
using namespace std;
using namespace upm;

View File

@ -26,7 +26,7 @@
#include <unistd.h>
#include <iostream>
#include <iomanip>
#include "grove.h"
#include "grove.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grovespeaker.h"
#include "grovespeaker.hpp"
using namespace std;

View File

@ -26,7 +26,7 @@
#include <unistd.h>
#include <iostream>
#include <iomanip>
#include "grove.h"
#include "grove.hpp"
int
main(int argc, char **argv)

View File

@ -26,7 +26,7 @@
#include <unistd.h>
#include <iostream>
#include "groveultrasonic.h"
#include "groveultrasonic.hpp"
#include <signal.h>
#include <stdlib.h>
#include <sys/time.h>

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grovevdiv.h"
#include "grovevdiv.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grovewater.h"
#include "grovewater.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "grovewfs.h"
#include "grovewfs.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "guvas12d.h"
#include "guvas12d.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <iostream>
#include "h3lis331dl.h"
#include "h3lis331dl.hpp"
using namespace std;
using namespace upm;

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include "h803x.h"
#include "h803x.hpp"
using namespace std;

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include <iostream>
#include "hcsr04.h"
#include "hcsr04.hpp"
#include <signal.h>
#include <stdlib.h>
#include <sys/time.h>

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include "hdxxvxta.h"
#include "hdxxvxta.hpp"
using namespace std;

View File

@ -3,7 +3,7 @@
#include <unistd.h>
#include <iostream>
#include <string>
#include "hlg150h.h"
#include "hlg150h.hpp"
#define HLG150H_GPIO_RELAY 21
#define HLG150H_GPIO_PWM 22

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include <stdio.h>
#include "hm11.h"
#include "hm11.hpp"
using namespace std;
using namespace upm;

View File

@ -24,7 +24,7 @@
*/
#include <unistd.h>
#include "hmc5883l.h"
#include "hmc5883l.hpp"
int
main(int argc, char **argv)

View File

@ -26,7 +26,7 @@
#include <string.h>
#include <iostream>
#include <signal.h>
#include "hmtrp.h"
#include "hmtrp.hpp"
using namespace std;
@ -135,7 +135,7 @@ int main (int argc, char **argv)
if (rv > 0)
cout << "Received: " << radioBuffer << endl;
if (rv < 0) // some sort of read error occured
if (rv < 0) // some sort of read error occurred
{
cerr << "Port read error." << endl;
break;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <iostream>
#include "hp20x.h"
#include "hp20x.hpp"
using namespace std;
using namespace upm;

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include "ht9170.h"
#include "ht9170.hpp"
using namespace std;

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include "htu21d.h"
#include "htu21d.hpp"
volatile int doWork = 0;

View File

@ -24,8 +24,8 @@
#include <unistd.h>
#include <iostream>
#include "si7005.h"
#include "bme280.h"
#include "si7005.hpp"
#include "bme280.hpp"
#define EDISON_I2C_BUS 1
#define FT4222_I2C_BUS 0
@ -41,6 +41,7 @@
upm::IHumiditySensor* getHumiditySensor()
{
upm::IHumiditySensor* humiditySensor = NULL;
try {
humiditySensor = new upm::BME280 (mraa_get_sub_platform_id(FT4222_I2C_BUS));
return humiditySensor ;

View File

@ -26,7 +26,7 @@
#include <iostream>
#include <signal.h>
#include "hwxpxx.h"
#include "hwxpxx.hpp"
using namespace std;

View File

@ -26,7 +26,7 @@
#include <signal.h>
//! [Interesting]
#include "hx711.h"
#include "hx711.hpp"
int
main(int argc, char **argv)

View File

@ -24,7 +24,7 @@
#include <unistd.h>
#include "ili9341.h"
#include "ili9341.hpp"
int main(int argc, char **argv) {
//! [Interesting]

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "ina132.h"
#include "ina132.hpp"
using namespace std;

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "isd1820.h"
#include "isd1820.hpp"
using namespace std;

View File

@ -23,7 +23,7 @@
*/
#include <unistd.h>
#include "itg3200.h"
#include "itg3200.hpp"
int
main(int argc, char **argv)

View File

@ -22,7 +22,7 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "jhd1313m1.h"
#include "jhd1313m1.hpp"
int
main(int argc, char **argv)

View File

@ -25,7 +25,7 @@
#include <unistd.h>
#include <iostream>
#include <signal.h>
#include "joystick12.h"
#include "joystick12.hpp"
#include <stdlib.h>
#include <sys/time.h>

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