This commit moves common SWIG syntax to a ${libname}.i for sensor
libraries. Much of the swig content was originally duplicated for
each wrapper language which has lead to inconsistencies between wrappers
over time. This commit moves all swig syntax to a common file. Language
specific swig syntax can be added with #ifdef SWIG<LANGUAGE>.
The src/CMakeLists.txt will look first for a language-specific .i file,
then fall back to ${libname}.i. In this way, it's possible to override
the common ${libname}.i file. If a fallback .i file does NOT exist,
UPM CMake will generate a simple interface file for all languages.
Example:
If no src/abp/pyupm_abp.i and no src/abp/abp.i then
generate ${CMAKE_CURRENT_BINARY_DIR}/abp.i
When src/CMakeLists.txt uses a common ${libname}.i, it adds a -module
<language>upm_${libname} to the swig command line.
In the example below, a -module argument is provided for both Java and
Javascript, while the python module takes all syntax from pyupm_abp.i.
SWIG FILE Language CMake added SWIG args
--------------- ---------- ---------------------
src/abp/abp.i java -module javaupm_abp
src/abp/abp.i javascript -module jsupm_abp
src/abp/pyupm_abp.i python
This commit removes ~4500 redundant lines for the UPM repository and
helps promote uniformity for the SWIG'ed languages.
Signed-off-by: Noel Eck <noel.eck@intel.com>
All other upm library directories match their corresponding library
name, the i2clcd was an outlier which caused problems for CMake and
testing.
* Replaced usage of i2clcd with lcd
* Renamed source files and examples
* Updated examples to use correct class
* Updated documentation where necessary (left changelog sections)
Signed-off-by: Noel Eck <noel.eck@intel.com>
Removed all references to #ifdef SWIGJAVA and JAVACALLBACK from the
library source. All java-specific source code has been moved to the
corresponding library's .i file for java.
* Update library source
* Update examples where necessary
* The function pointer methodology has been remove from libraries
which provided callbacks as both a class and a function pointer
implementation. Examples were updated to use the class version
of callbacks.
* Updated documentation for SWIGJAVA
Signed-off-by: Noel Eck <noel.eck@intel.com>
Replace TemplateItem with SensorTemplate in the sensortemplate.json and
json ctest. Change to contributions.md which removes all objects
with a key starting with "//" from the generated sensor .json file.
This allows the json ctest to pass OOTB for new sensor libraries
generated from the make_new_sensor function.
Signed-off-by: Noel Eck <noel.eck@intel.com>
* Add documentation on how to build android packages
* Check env vars before running build-android.sh
* Add doc strings to build-android.sh
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
* Use docker images from docker hub instead of building them on Travis
* Fix doxygen warnings for Markdown Files
* Modify Travis build matrix to include stages and additional jobs
* Add doxygen2jsdoc submodule
* Add doxyport submodule
* Remove duplicated code in doxy/node directory
* Generate documentation for each language in Travis
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Make a build heriarchy to reduce images size.
Add Android Things builds to build matrix.
Drop gcc-4 builds, use gcc-5 and gcc-6 instead.
Add SonarQube static analysis scans.
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
and example
LIDAR-Lite v3, a compact, high-performance optical distance measurement
sensor from Garmin™. It is the ideal solution for drone, robot or unmanned
vehicle applications.
The library provided is libupm-lidarlitev3.so
The example provided is lidarlitev3.cxx where it will print the distance
of object/obstacle from the sensor.
The image of the sensor is at docs/images/lidarlitev3.jpg
Signed-off-by: Saloni Jain <saloni.jain@tcs.com>
Signed-off-by: Niti Rohilla <niti.rohilla@tcs.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
There are a variety of LSM303 devices out there with various
incompatibilities and differing capabilities. The current lsm303
driver in UPM only supports the LSM303DLH variant, so it has been
renamed to lsm303dlh to avoid confusion and to make it clear which
variant is actually supported.
All examples and source files have been renamed, including header
files. In addition, the class name, LSM303, has been renamed to
LSM303DLH. No other functionality or behavior has been changed.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Fixed bug in sensortemplate script. Handled assinment operator with
export since exec'ed processes need these variables.
Signed-off-by: Noel Eck <noel.eck@intel.com>
C/C++ CMakeLists.txt lines are no longer needed - removed.
Converted bash script to a function to add some error checking.
Removed redundant author/copyright entry.
Signed-off-by: Noel Eck <noel.eck@intel.com>
This driver has been rewritten from scratch.
See docs/apichanges.md for a list of API compatibility changes
compared to the original driver.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
The sainsmartks driver has been reimplemented in it's own, new C/C++
library: lcdks (LCD Keypad Shield).
In addition, support for an optional backlight GPIO was added.
This was tested with the SainsmartKS and DFRobot LCD Keypad Shields.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Some private methods (relating to calibration/compensation) are no
longer exposed. In addition, the driver auto-detects the chip (BMP280
or BME280) and acts accordingly, rather than requiring the
specification of a chip id in the ctor.
The getHumidity() method no longer accepts an arguement representing
pressure at sea level. A new method is provided to specify this.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
The API has been changed in some cases - see the apichanges.md
document.
In addition, this driver uses a new upm_vectortypes.i SWIG interface
file to provide a mechanism for methods that return a vector of floats
and ints instead of a pointer to an array.
This works much nicer than C array pointers, and results in Python/JS/Java
code that looks much more "natural" to the language in use.
The Python, JS, and Java examples have been changed to use these
methods. Support for the "old" C-style pointer methods are still
provided for backward compatibility with existing code.
As an example - to retrieve the x, y, and z data for Euler Angles from
the bno055, the original python code would look something like:
...
x = sensorObj.new_floatp()
y = sensorObj.new_floatp()
z = sensorObj.new_floatp()
...
sensor.getEulerAngles(x, y, z)
...
print("Euler: Heading:", sensorObj.floatp_value(x), end=' ')
print(" Roll:", sensorObj.floatp_value(y), end=' ')
...
Now the equivalent code is simply:
floatData = sensor.getEulerAngles()
print("Euler: Heading:", floatData[0], ...
print(" Roll:", floatData[1], end=' ')
...
Additionally, interrupt handling for Java is now implemented
completely in the C++ header file now rather than the .cxx file, so no
special SWIG processing is required anymore. See Issue #518 .
Signed-off-by: Jon Trulson <jtrulson@ics.com>
The purpose of the templatesensor is to get contributors up and running
faster when adding a new sensor.
* Created library named 'sensortemplate'
* Added C++ source
* Added swig interface files for java, javascript, and python
* Added sensortemplate image file
* Added examples for c++, java, javascript, and python
* Updated contributions.md with steps to create a new sensor from
the sensortemplate library.
Signed-off-by: Noel Eck <noel.eck@intel.com>
In an effort to clean-up and standardize UPM library
documentation, this commit updates (and in most cases,
unifies) the CMake description string AND CXX header
@comname string.
Strings were taken from datasheets when possible, spelling
mistakes were addressed, copy/paste errors where fixed,
Title Case was used, etc.
* Tested/updated/added @web tags
* Added/updated invalid sensor images
* Added/updated @man tags, added missing manufacturers
Signed-off-by: Noel Eck <noel.eck@intel.com>
Previously, the C++ and C versions of this driver were separate. Now
the C++ implementation wraps the C implementation.
In addition, the C++ init() function has been deprecated. It
currently does nothing, and examples have been modified to remove it's
calls. This function will be removed in a separate release.
The examples have been further modified to update all detected devices
and print their respective temperatures, instead of only reporting the
on the first device detected.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
The java examples will now build if BUILDSWIGJAVA=on and
BUILDEXAMPLES=on. This is similar to the C/C++ examples.
* Replaced BUILDJAVAEXAMPLES w/BUILDEXAMPLES
* Updated docs
* Updated travis-ci
Signed-off-by: Noel Eck <noel.eck@intel.com>