Compare commits

..

13 Commits

Author SHA1 Message Date
8734767a5c cmake: disable TGZ from builds when IPK used
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-22 18:42:31 +00:00
b4535a6403 curieimu: Adds examples for both JS and Python that load MRAA Firmata subplatform
Signed-off-by: deadprogram <ron@hybridgroup.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-22 17:05:13 +00:00
3d37f957bf cmake: add workaround for cmake 2.7
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-22 17:05:13 +00:00
3722dfc780 cmake: Fix issues with node v4/v5
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-22 17:05:13 +00:00
b113a46813 .travis.yml: Make travis test node4/node5 and node0.12
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-22 17:05:13 +00:00
aa30b59e44 cmake: add BUILDPYTHON3 flag
Use the same methodology as in mraa, by default build for python2, if requested
use python3 for everything

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-22 17:05:13 +00:00
159d2eee07 FindNode.cmake: Improve FindNode cmake module
Use mraa's FindNode since it's alot more robus and can handle NVM better

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-21 17:32:23 +00:00
7fd9f0c508 curieimu: Add WIP for Python example
Signed-off-by: deadprogram <ron@hybridgroup.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-21 17:13:25 +00:00
3ca9bfe80f Updates implementation and examples to use dynamic-friendly interface
Signed-off-by: deadprogram <ron@hybridgroup.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-21 17:13:25 +00:00
90983fde9d Complete accel and gyro implementations for new dynamic friendly interface
Signed-off-by: deadprogram <ron@hybridgroup.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-21 17:13:25 +00:00
ee19daedee curieimu: modify calls to use update methodology to fix python/java/js API
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-18 14:56:23 +00:00
61dbfe4f23 curieimu: Make compilation dependant on mraa_firmata_init
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-18 12:40:32 +00:00
224a915538 curieimu: Plugin to interface with the arduino101's IMU
Internal sensor onboard the Curie/Arduino101 can be accessed via Firmata using
this plugin. You will need mraa compiled with -DFIRMATA=ON for this to work and
be using Firmata with the CurieIMU firmata extension for ExtensibleFirmata

Signed-off-by: Ron Evans <ron@hybridgroup.com>
Signed-off-by: Justin Zemlyansky <jlstigman@live.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-03-18 12:40:32 +00:00
1295 changed files with 1744 additions and 58993 deletions

View File

@ -1,46 +1,37 @@
language: cpp
env:
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
- CC=gcc CXX=gcc
- CC=clang CXX=clang++
- NODE4=true
- NODE5=true
- NODE012=true
install:
- if [ "${NODE4}" ]; then export CC=gcc-4.8 CXX=g++-4.8; fi
- sudo add-apt-repository --yes ppa:kalakris/cmake
- sudo add-apt-repository --yes ppa:fenics-packages/fenics-exp/swig
- sudo apt-get update -qq
- sudo apt-get install -y -qq swig3.0 git
- sudo apt-get install -y -qq swig3.0 python git cmake
- sudo ln -s /usr/bin/swig3.0 /usr/bin/swig
- sudo update-java-alternatives -s java-8-oracle
before_script:
# 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
- 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
script:
- 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
- git clone --branch=firmata 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
addons:
apt:
sources:
- llvm-toolchain-precise-3.6
- ubuntu-toolchain-r-test
- george-edison55-precise-backports
packages:
- cmake
- cmake-data
- clang-3.6
- g++-4.8

View File

@ -10,22 +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>=1.0.0)
pkg_check_modules (MRAA REQUIRED mraa>=0.9.1)
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})
# Set CMAKE_INSTALL_LIBDIR if not defined
include(GNUInstallDirs)
set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation path for libraries")
# Set CMAKE_LIB_INSTALL_DIR if not defined
include(GNUInstallDirs)
# 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.7.0-dirty")
set (VERSION "v0.5.1-dirty")
endif ()
message (INFO " - UPM Version ${VERSION}")
@ -58,8 +58,7 @@ 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)
option (BUILDTESTS "Generate check-ups for upm" OFF)
# Find swig
if (BUILDSWIG)
@ -78,32 +77,6 @@ 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)
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.")
endif()
if (BUILDDOC)
# Add a target to generate API documentation with Doxygen
find_package (Doxygen)
@ -127,10 +100,11 @@ if (BUILDDOC)
find_package (Sphinx)
if(SPHINX_FOUND AND BUILDSWIG AND BUILDSWIGPYTHON)
# Python required for Sphinx build
find_package (PythonLibs ${PYTHONBUILD_VERSION} REQUIRED)
find_package (PythonLibs)
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)
set (SITE_PACKAGES ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
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
@ -157,9 +131,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 ${NODEJS_EXECUTABLE} docgen -m upm -i xml -t ${CMAKE_CURRENT_SOURCE_DIR}/src -g ../../
COMMAND ${NODE_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 ${NODEJS_EXECUTABLE} tolower -i html/node
COMMAND ${NODE_EXECUTABLE} tolower -i html/node
DEPENDS doc
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Yuidoc" VERBATIM
@ -209,25 +183,21 @@ if (RPM)
message (INFO " - RPM packaging enabled for ${DETECTED_ARCH}")
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_NAME "libupm${upm_VERSION_MAJOR}")
set(CPACK_PACKAGE_RELEASE 1)
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*\\.//"
COMMAND tr \\n \\t
COMMAND sed -e s/\\t//
OUTPUT_VARIABLE DIST_TAG)
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.${DIST_TAG}.${DETECTED_ARCH}")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${DIST_TAG}.${DETECTED_ARCH}")
include(CPack)
endif()
@ -247,10 +217,12 @@ if (BUILDSWIGPYTHON OR BUILDTESTS)
else ()
set (PYTHONBUILD_VERSION 2.7)
endif ()
find_package (PythonInterp ${PYTHONBUILD_VERSION} REQUIRED)
find_package (PythonLibs ${PYTHONBUILD_VERSION} REQUIRED)
include_directories(${PYTHON_INCLUDE_PATH})
endif ()
if (BUILDTESTS)
find_package (PythonInterp ${PYTHONBUILD_VERSION} REQUIRED)
enable_testing ()
add_subdirectory (tests)
endif()

View File

@ -1,29 +1,16 @@
UPM (Useful Packages & Modules) Sensor/Actuator repository for MRAA
==============
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.
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.
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.
The constructor is expected to initialise the sensor and parameters may be used
to provide identification/pin location on the board.
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
The developer community is encouraged to help expand the list of supported
sensors and actuators and provide feedback on interface design.
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.
### Example
@ -64,6 +51,10 @@ A sensor/actuator is expected to work as such (here is the MMA7660 accelerometer
}
```
However implementation and API design is completely up to the developer, some
enumerable sensors for example may provide much clever instantiation. Displays
may also create more complex structures in order to interface with them.
Browse through the list of all [examples](https://github.com/intel-iot-devkit/upm/tree/master/examples).
Multi-sensor samples for the starter and specialized kits can be found in the
@ -90,7 +81,7 @@ See building documentation [here](docs/building.md).
Porting [link](docs/porting.md) has more information on making new UPM modules.
There is also an example available gfor max31855 [sensor](docs/max31855.md).
There is also an example available for max31855 [sensor](docs/max31855.md).
Guide on creating Java [bindings](docs/creating_java_bindings.md).
@ -114,14 +105,6 @@ 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 (NODEJS_EXECUTABLE)
mark_as_advanced (NODE_EXECUTABLE)

View File

@ -1,15 +0,0 @@
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,48 +4,6 @@ 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
environments reported by users.
* Fixed multiple GFX library header clash and improved SSD1351 compatibility
by changing SPI mode
* Added Node and Python array typemaps for nrf24l01
* Added 2 new JAVA examples
### v0.6.0
* Introduced C++ Interfaces for several sensor categories that will help
consolidate the sensor APIs with uniform function names upon implementation
* Greatly improved Node.js detection and handling during build and install,
and should be now compatible with all major versions
* Added a driver for the Curie IMU (accelerometer + gyroscope) that works with
the new Firmata support implemented by MRAA
* Continued to provide several JAVA fixes and examples
* Many new industrial and maker sensors: cwlsxxa, teams, tex00, h803x, apa102,
smartdrive, bmi160, bme280, ds1808lc, hlg150, lp8860, max44009, si1132, t6713,
si7005, ssd1351
### v0.5.1
* Updated the API and added new functionality for the MY9221 class and derived

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

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.hpp
* max31855.h
* 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.hpp) , a very simple header in our case we
Then we create the header (max31855.h) , 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.hpp Interesting
@snippet max31855.h 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.hpp and a C++ file called
By default you need a header called modulename.h and a C++ file called
modulename.cxx. You can have multiple headers and source files. Only public
headers need to be added to module_hpp and all source files need to be in
headers need to be added to module_h and all source files need to be in
module_src.
~~~~~~~~~~~
set (libname "modulename")
set (libdescription "Module Description")
set (module_src ${libname}.cxx)
set (module_hpp ${libname}.hpp)
set (module_h ${libname}.h)
upm_module_init()
~~~~~~~~~~~

View File

@ -859,10 +859,7 @@ 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_*
EXCLUDE_PATTERNS =
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the

View File

@ -48,7 +48,7 @@ mpu9150.cxx MPU9150Sample.java
mq2.cxx MQ2Sample.java
mq303a.cxx MQ303ASample.java
mq5.cxx MQ5Sample.java
groveledbar GroveLEDBar
my9221-ledbar.cxx MY9221_ledbarSample.java
nrf24l01-receiver.cxx NRF24L01_receiverSample.java
nrf24l01-transmitter.cxx NRF24L01_transmitterSample.java
nunchuck.cxx NUNCHUCKSample.java

View File

@ -234,41 +234,15 @@ if (MODBUS_FOUND)
include_directories(${MODBUS_INCLUDE_DIRS})
add_example (t3311)
add_example (hwxpxx)
add_example (h803x)
endif()
add_example (hdxxvxta)
add_example (rhusb)
add_example (apds9930)
add_example (kxcjk1013)
add_example (ssd1351)
add_example (ds1808lc)
add_example (hlg150h)
add_example (lp8860)
add_example (max44009)
add_example (si1132)
add_example (si7005)
add_example (t6713)
add_example (cwlsxxa)
add_example (teams)
add_example (apa102)
add_example (tex00)
add_example (bmi160)
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)
@ -287,11 +261,3 @@ 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;bmpx8x;bme280")
add_custom_example (humidity-sensor-example humidity-sensor.cxx "si7005;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.hpp"
#include "a110x.h"
using namespace std;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,80 +0,0 @@
/*
* Author: Henry Bruce <henry.bruce@intel.com>
* Copyright (c) 2015 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 "ads1015.hpp"
#include "mraa/gpio.hpp"
#define EDISON_I2C_BUS 1
#define FT4222_I2C_BUS 0
#define EDISON_GPIO_SI7005_CS 20
//! [Interesting]
// Simple example of using IADC to determine
// which sensor is present and return its name.
// IADC is then used to get readings from sensor
upm::IADC* getADC()
{
upm::IADC* adc = NULL;
try {
adc = new upm::ADS1015(EDISON_I2C_BUS);
mraa::Gpio gpio(EDISON_GPIO_SI7005_CS);
gpio.dir(mraa::DIR_OUT_HIGH);
return adc;
} catch (std::exception& e) {
std::cerr << "ADS1015: " << e.what() << std::endl;
}
return adc;
}
int main ()
{
upm::IADC* adc = getADC();
if (adc == NULL) {
std::cout << "ADC not detected" << std::endl;
return 1;
}
std::cout << "ADC " << adc->getModuleName() << " detected. " ;
std::cout << adc->getNumInputs() << " inputs available" << std::endl;
while (true) {
for (unsigned int i=0; i<adc->getNumInputs(); ++i) {
std::cout << "Input " << i;
try {
float voltage = adc->getVoltage(i);
std::cout << ": Voltage = " << voltage << "V" << std::endl;
} catch (std::exception& e) {
std::cerr << e.what() << std::endl;
}
}
sleep(1);
}
delete adc;
return 0;
}
//! [Interesting]

View File

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

View File

@ -26,8 +26,8 @@
#include <iostream>
#include <unistd.h>
#include "ads1015.hpp"
#include "ads1115.hpp"
#include "ads1015.h"
#include "ads1115.h"
@ -286,7 +286,7 @@ int main()
else ads->setCompMode();
break;
case 18:
cout << ads->getCompLatch() << endl;
cout << ads->getCompLatch() << cout;
break;
case 19:
cout << "select one of the following:" << endl;
@ -296,7 +296,7 @@ int main()
else ads->setCompLatch();
break;
case 20:
cout << ads->getContinuous() << endl;
cout << ads->getContinuous() << cout;
break;
case 21:
cout << "select one of the following:" << endl;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,51 +0,0 @@
/*
* Author: Yannick Adam <yannick.adam@gmail.com>
* Copyright (c) 2016 Yannick Adam
*
* 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 "apa102.hpp"
#include <iostream>
#include <signal.h>
#include <unistd.h>
using namespace std;
int
main(int argc, char** argv)
{
//! [Interesting]
// Instantiate a strip of 30 LEDs on SPI bus 0
upm::APA102* ledStrip = new upm::APA102(800, 0);
// Set all LEDs to Red
ledStrip->setAllLeds(31, 255, 0, 0);
// Set a section (10 to 20) to blue
ledStrip->setLeds(10, 20, 31, 0, 0, 255);
// Set a single LED to green
ledStrip->setLed(15, 31, 0, 255, 0);
delete ledStrip;
//! [Interesting]
return 0;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,78 +0,0 @@
/*
* 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 "bme280.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 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

@ -1,82 +0,0 @@
/*
* 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 "bmi160.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 a BMI160 instance using default i2c bus and address
upm::BMI160 *sensor = new upm::BMI160();
while (shouldRun)
{
// update our values from the sensor
sensor->update();
float dataX, dataY, dataZ;
sensor->getAccelerometer(&dataX, &dataY, &dataZ);
cout << "Accelerometer: ";
cout << "AX: " << dataX << " AY: " << dataY << " AZ: "
<< dataZ << endl;
sensor->getGyroscope(&dataX, &dataY, &dataZ);
cout << "Gryoscope: ";
cout << "GX: " << dataX << " GY: " << dataY << " GZ: "
<< dataZ << endl;
sensor->getMagnetometer(&dataX, &dataY, &dataZ);
cout << "Magnetometer: ";
cout << "MX: " << dataX << " MY: " << dataY << " MZ: "
<< dataZ << endl;
cout << endl;
usleep(500000);
}
//! [Interesting]
cout << "Exiting..." << endl;
delete sensor;
return 0;
}

View File

@ -1,77 +0,0 @@
/*
* 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.hpp"
#include "bmpx8x.h"
#include <signal.h>
int doWork = 0;

View File

@ -1,129 +0,0 @@
/*
* 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.hpp"
#include "buzzer.h"
int

View File

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

View File

@ -1,71 +0,0 @@
/*
* Author: Henry Bruce <henry.bruce@intel.com>
* Copyright (c) 2015 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 "t6713.hpp"
#define EDISON_I2C_BUS 1
#define FT4222_I2C_BUS 0
//! [Interesting]
// Simple example of using ICO2Sensor to determine
// which sensor is present and return its name.
// ICO2Sensor is then used to get readings from sensor
upm::ICO2Sensor* getCO2Sensor()
{
upm::ICO2Sensor* cO2Sensor = NULL;
try {
cO2Sensor = new upm::T6713(mraa_get_sub_platform_id(FT4222_I2C_BUS));
return cO2Sensor;
} catch (std::exception& e) {
std::cerr << "T6713: " << e.what() << std::endl;
}
return cO2Sensor;
}
int main ()
{
upm::ICO2Sensor* cO2Sensor = getCO2Sensor();
if (cO2Sensor == NULL) {
std::cout << "CO2 sensor not detected" << std::endl;
return 1;
}
std::cout << "CO2 sensor " << cO2Sensor->getModuleName() << " detected" << std::endl;
while (true) {
try {
uint16_t value = cO2Sensor->getPpm();
std::cout << "CO2 level = " << value << " ppm" << std::endl;
} catch (std::exception& e) {
std::cerr << e.what() << std::endl;
}
sleep(1);
}
delete cO2Sensor;
return 0;
}
//! [Interesting]

View File

@ -1,82 +0,0 @@
/*
* 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 "cwlsxxa.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 CWLSXXA instance, using A0 for CO2, A1 for
// humidity and A2 for temperature
upm::CWLSXXA *sensor = new upm::CWLSXXA(0, 1, 2);
// update and print available values every second
while (shouldRun)
{
// update our values from the sensor
sensor->update();
// we show both C and F for temperature
cout << "Temperature: " << sensor->getTemperature()
<< " C / " << sensor->getTemperature(true) << " F"
<< endl;
cout << "Humidity: " << sensor->getHumidity()
<< " %" << endl;
cout << "CO2: " << sensor->getCO2()
<< " ppm" << endl;
cout << endl;
sleep(1);
}
cout << "Exiting..." << endl;
delete sensor;
//! [Interesting]
return 0;
}

View File

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

View File

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

View File

@ -1,51 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <iostream>
#include <string>
#include "ds1808lc.hpp"
#define EDISON_I2C_BUS 1 // Edison I2C-1
#define DS1808_GPIO_PWR 15 // Edison GP165
void printState(upm::ILightController *lightController)
{
if (lightController->isPowered())
{
std::cout << "Light is powered, brightness = " << lightController->getBrightness() << std::endl;
}
else
{
std::cout << "Light is not powered." << std::endl;
}
}
int main( int argc, char **argv )
{
int status = 0;
upm::ILightController* lightController;
try {
lightController = new upm::DS1808LC(DS1808_GPIO_PWR, EDISON_I2C_BUS);
std::cout << "Existing state: "; printState(lightController);
if (argc == 2)
{
std::string arg = argv[1];
int brightness = ::atoi(argv[1]);
if (brightness > 0) {
lightController->setPowerOn();
lightController->setBrightness(brightness);
} else
lightController->setPowerOff();
}
std::cout << "Now: ";printState(lightController);
} catch (std::exception& e) {
std::cout << "Error: " << e.what() << std::endl;
status = 1;
}
delete lightController;
return status;
}

View File

@ -1,81 +0,0 @@
/*
* 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;
}

View File

@ -1,59 +0,0 @@
/*
* 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;
}

View File

@ -1,112 +0,0 @@
/*
* 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.hpp"
#include "eboled.h"
using namespace std;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -26,7 +26,7 @@
#include <unistd.h>
#include <iostream>
#include "groveultrasonic.hpp"
#include "groveultrasonic.h"
#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.hpp"
#include "grovevdiv.h"
using namespace std;

View File

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

View File

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

View File

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

View File

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

View File

@ -1,149 +0,0 @@
/*
* 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 "h803x.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]
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 H803X instance, using MODBUS slave address 1, and
// default comm parameters (9600, 8, N, 2)
upm::H803X *sensor = new upm::H803X(defaultDev, 1);
// output the Slave ID string
cout << "Slave ID: " << sensor->getSlaveID() << endl;
cout << endl;
// update and print available values every second
while (shouldRun)
{
// update our values from the sensor
sensor->update();
// H8035 / H8036
cout << "Consumption (kWh): " << sensor->getConsumption() << endl;
cout << "Real Power (kW): " << sensor->getRealPower() << endl;
if (sensor->isH8036())
{
// The H8036 has much more data available...
cout << "Reactive Power (kVAR): " << sensor->getReactivePower()
<< endl;
cout << "Apparent Power (kVA): " << sensor->getApparentPower()
<< endl;
cout << "Power Factor: " << sensor->getPowerFactor()
<< endl;
cout << "Volts Line to Line: " << sensor->getVoltsLineToLine()
<< endl;
cout << "Volts Line to Neutral: " << sensor->getVoltsLineToNeutral()
<< endl;
cout << "Current: " << sensor->getCurrent()
<< endl;
cout << "Real Power Phase A (kW): " << sensor->getRealPowerPhaseA()
<< endl;
cout << "Real Power Phase B (kW): " << sensor->getRealPowerPhaseB()
<< endl;
cout << "Real Power Phase C (kW): " << sensor->getRealPowerPhaseC()
<< endl;
cout << "Power Factor Phase A: " << sensor->getPowerFactorPhaseA()
<< endl;
cout << "Power Factor Phase B: " << sensor->getPowerFactorPhaseB()
<< endl;
cout << "Power Factor Phase C: " << sensor->getPowerFactorPhaseC()
<< endl;
cout << "Volts Phase A to B: " << sensor->getVoltsPhaseAToB()
<< endl;
cout << "Volts Phase B to C: " << sensor->getVoltsPhaseBToC()
<< endl;
cout << "Volts Phase A to C: " << sensor->getVoltsPhaseAToC()
<< endl;
cout << "Volts Phase A to Neutral: "
<< sensor->getVoltsPhaseAToNeutral()
<< endl;
cout << "Volts Phase B to Neutral: "
<< sensor->getVoltsPhaseBToNeutral()
<< endl;
cout << "Volts Phase C to Neutral: "
<< sensor->getVoltsPhaseCToNeutral()
<< endl;
cout << "Current Phase A: " << sensor->getCurrentPhaseA()
<< endl;
cout << "Current Phase B: " << sensor->getCurrentPhaseB()
<< endl;
cout << "Current Phase C: " << sensor->getCurrentPhaseC()
<< endl;
cout << "Avg Real Power (kW): " << sensor->getAvgRealPower()
<< endl;
cout << "Min Real Power (kW): " << sensor->getMinRealPower()
<< endl;
cout << "Max Real Power (kW): " << sensor->getMaxRealPower()
<< endl;
}
cout << endl;
sleep(2);
}
cout << "Exiting..." << endl;
delete sensor;
//! [Interesting]
return 0;
}

View File

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

View File

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

View File

@ -1,51 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <iostream>
#include <string>
#include "hlg150h.hpp"
#define HLG150H_GPIO_RELAY 21
#define HLG150H_GPIO_PWM 22
void printState(upm::ILightController *lightController)
{
if (lightController->isPowered())
{
std::cout << "Light is powered, brightness = " << lightController->getBrightness() << std::endl;
}
else
{
std::cout << "Light is not powered." << std::endl;
}
}
int main( int argc, char **argv )
{
int status = 0;
upm::ILightController* lightController;
try {
lightController = new upm::HLG150H(HLG150H_GPIO_RELAY, HLG150H_GPIO_PWM);
std::cout << "Existing state: "; printState(lightController);
if (argc == 2)
{
std::string arg = argv[1];
int brightness = ::atoi(argv[1]);
if (brightness > 0) {
lightController->setPowerOn();
lightController->setBrightness(brightness);
} else
lightController->setPowerOff();
}
std::cout << "Now: ";printState(lightController);
delete lightController;
} catch (std::exception& e) {
std::cout << "Error: " << e.what() << std::endl;
status = 1;
}
return status;
}

View File

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

View File

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

View File

@ -26,7 +26,7 @@
#include <string.h>
#include <iostream>
#include <signal.h>
#include "hmtrp.hpp"
#include "hmtrp.h"
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 occurred
if (rv < 0) // some sort of read error occured
{
cerr << "Port read error." << endl;
break;

View File

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

View File

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

View File

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

View File

@ -1,83 +0,0 @@
/*
* Author: Henry Bruce <henry.bruce@intel.com>
* Copyright (c) 2015 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 "si7005.hpp"
#include "bme280.hpp"
#define EDISON_I2C_BUS 1
#define FT4222_I2C_BUS 0
#define EDISON_GPIO_SI7005_CS 20
//! [Interesting]
// Simple example of using ILightSensor to determine
// which sensor is present and return its name.
// ILightSensor is then used to get readings from sensor
upm::IHumiditySensor* getHumiditySensor()
{
upm::IHumiditySensor* humiditySensor = NULL;
try {
humiditySensor = new upm::BME280 (mraa_get_sub_platform_id(FT4222_I2C_BUS));
return humiditySensor ;
} catch (std::exception& e)
{
std::cerr <<"BME280: "<<e.what() << std::endl;
}
try {
humiditySensor = new upm::SI7005(EDISON_I2C_BUS, EDISON_GPIO_SI7005_CS);
return humiditySensor;
} catch (std::exception& e) {
std::cerr << "SI7005: " << e.what() << std::endl;
}
return humiditySensor;
}
int main ()
{
upm::IHumiditySensor* humiditySensor = getHumiditySensor();
if (humiditySensor == NULL) {
std::cout << "Humidity sensor not detected" << std::endl;
return 1;
}
std::cout << "Humidity sensor " << humiditySensor->getModuleName() << " detected" << std::endl;
while (true) {
try {
int value = humiditySensor->getHumidityRelative();
std::cout << "Humidity = " << value << "%" << std::endl;
} catch (std::exception& e) {
std::cerr << e.what() << std::endl;
}
sleep(1);
}
delete humiditySensor;
return 0;
}
//! [Interesting]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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