Compare commits

...

796 Commits

Author SHA1 Message Date
Propanu
d6f76ff8c2
naming.md: remove personal info
Project's community can be engaged via Github to provide help and comments on new contributions.
2021-07-23 13:02:23 -07:00
Propanu
8ae7f89e03
porting.md: remove personal information
Contributions can only be made via github.
2021-07-23 12:58:00 -07:00
Mihai Tudor Panu
3f7dcc6e0b installing: provide instructions for rhel and other linux distributions
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2020-09-01 13:11:26 -07:00
Mihai Tudor Panu
0a0c352614 tests: add missing license block on project python and node tests
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2020-03-05 15:14:11 -08:00
Mihai Tudor Panu
89d5de43e0 license: update to SPDX style license text throughout
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2020-03-05 15:13:36 -08:00
Mihai Tudor Panu
dc843c0bd7 doxy: fix sparkfun image license version in template
Sparkfun provided images are covered under CC BY 2.0, update license on documentation template to reflect correct license.

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2020-03-05 15:13:08 -08:00
Mihai Tudor Panu
c37a48255e contributing: update project contribution guides
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2020-03-05 15:12:53 -08:00
Mihai Tudor Panu
ab25e56212 readme: additional cleanup to readme
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2020-03-05 15:12:39 -08:00
Mihai Tudor Panu
f5a66936be eclipse: update readme and contributing.md to reflect Eclipse changes
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2020-03-05 15:12:29 -08:00
Mihai Tudor Panu
5cf20df96c upm: version 2.0.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-05-08 08:06:25 -07:00
Mihai Tudor Panu
33d0aee280 grove: remove deprecated classes and examples
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-05-08 08:06:21 -07:00
Mihai Tudor Panu
7d0600df1c 2jciebu01_usb: remove unused device path variable
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-05-05 17:56:14 -07:00
Mihai Tudor Panu
b454862649 2jciebu01: rename examples to build during CI job
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-05-05 15:56:27 -07:00
Mihai Tudor Panu
9501488709 targetarch: remove arch detection logic as it is not needed at upm level
This removes the DETECTED_ARCH cmake variable and device arch detection module as this is irrelevant for UPM. Also removing toolchain files since they are not really needed by this project.

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-05-04 18:34:27 -07:00
Mihai Tudor Panu
8f3f2a7de2 cmake: remove ipk and rpm generation as handled through recipes
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-05-03 23:18:05 -07:00
Mihai Tudor Panu
4c6fde84f4 iio: switch to safer use of snprintf for a couple of iio sensors
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-30 19:38:42 -07:00
Mihai Tudor Panu
2c7fff24c7 docker-compose: map sonar scan job to new sonar docker image
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-16 18:16:10 -07:00
Mihai Tudor Panu
e3d054086b tests: reenable java blacklist until tinyb.java is formally integrated
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-11 12:04:28 -07:00
Mihai Tudor Panu
2b6f2c5b53 2jciebu01: fix base class and build dependencies
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-11 04:57:12 +00:00
Mihai Tudor Panu
2a948ca687 cmake: handle tinyb dependency through upm_init_module macro
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-11 04:36:13 +00:00
Mihai Tudor Panu
d282d479bb cmake: check compiler version before adding -Wno-misleading-indentation flag
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-10 23:02:44 +00:00
Mihai Tudor Panu
d256a225bf 2jciebu01: remove attribute specifier from common header and update swig interfaces
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-10 23:02:43 +00:00
Mihai Tudor Panu
9cddd4a8b1 cmake: add check for tinyb and set as dependency for 2jciebu01-ble
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-10 23:02:39 +00:00
Mihai Tudor Panu
223b6028bf 2jciebu01: update documentation tags, dependencies, library names
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-05 16:20:41 -07:00
Mihai Tudor Panu
b08eef0197 2jciebu01: put new sources in right location
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-05 16:20:40 -07:00
Hiroyuki Mino
e0be90589b 2jciebu01: initial implementation of Omron's Environment Sensor using BLE interface
Signed-off-by: Hiroyuki Mino <Hank.Mino@omron.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-05 16:20:39 -07:00
Hiroyuki Mino
bf315ee5c6 2jciebu01: initial implementation of Omron's USB type Environment Sensor
Signed-off-by: Hiroyuki Mino <Hank.Mino@omron.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-05 16:20:38 -07:00
Mihai Tudor Panu
066385d9ac travis: allow failure of android things job as no longer actively supported
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-05 08:33:24 -07:00
Mihai Tudor Panu
934d571964 bmpx8x: library implements new iTemperature interface
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-05 08:33:12 -07:00
Adelin Dobre
ef92026253 BNO055: Change parameter in example file
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:24:14 -07:00
Adelin Dobre
a106345527 BH1749: Fix inconsistences inside string init constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:24:05 -07:00
Adelin Dobre
3044bc6b49 Remove unnecessary logs from upm_string_parser
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:23:56 -07:00
Adelin Dobre
d2428ca5da BH1792: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:23:47 -07:00
Adelin Dobre
bd445385a7 EHR: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:23:38 -07:00
Adelin Dobre
402739fa74 ECS1030: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:23:28 -07:00
Adelin Dobre
5b97b0a98e BH1749: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:23:20 -07:00
Adelin Dobre
d3ce509334 DS2413: Add string based constructor for Switch
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:23:11 -07:00
Adelin Dobre
f608b0fa98 DS1808LC: Add string based cons for Controller
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:23:02 -07:00
Adelin Dobre
6cbfa60729 DS1307: Add string based constructor for Clock
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:22:54 -07:00
Adelin Dobre
8a2ef9a648 DFRPH: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:22:45 -07:00
Adelin Dobre
1c0ed9c9bd DFRORP: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:22:36 -07:00
Adelin Dobre
fe3dcc01b2 ADXL345: Make some changes in cpp interface
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:22:27 -07:00
Adelin Dobre
1111a830c9 AD8232: Make some changes in cpp interface
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:22:18 -07:00
Adelin Dobre
660b34c2ce Remove initio directory from upm/src
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:22:09 -07:00
Adelin Dobre
9869b31a3e Make static allocation for mraaIo variable
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:22:01 -07:00
Adelin Dobre
90167f6ac1 BNO055 9DOF: Add string based cons for Fusion Hub
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:21:51 -07:00
Adelin Dobre
03bc2ae26e BMX055/BMI055/BMC150: Add string based cons
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:21:42 -07:00
Adelin Dobre
a8cd0f72ec Add changes getting values for upm parameters
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:21:32 -07:00
Adelin Dobre
cb27acbc04 APA102: Add string based constructor for LED Strip
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:21:23 -07:00
Adelin Dobre
2975bae075 Fix some issues for string based constructors
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:21:14 -07:00
Adelin Dobre
8f11061de3 CWLSXXA CO2: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:21:06 -07:00
Adelin Dobre
a3bf6d76a9 Collision Sensor: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:20:57 -07:00
Adelin Dobre
582decd4f7 CJQ4435 MOSFET: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:20:48 -07:00
Adelin Dobre
d38339ab9f Button: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:20:39 -07:00
Adelin Dobre
fc0c0fdbaa BMP: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:20:31 -07:00
Adelin Dobre
b675b89e1b BME280: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:20:22 -07:00
Adelin Dobre
ebe84f96b2 BMP280: Add string based constructor for Pressure Sensor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:20:12 -07:00
Adelin Dobre
c5287adf36 BMM150: Add string based constructor for Magnetometer
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:20:04 -07:00
Adelin Dobre
9f545f10af BMG160: Add string based cons for 3-axis Gyroscope
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:19:55 -07:00
Adelin Dobre
40f6bd9c6c BMA250E: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:19:46 -07:00
Adelin Dobre
71cb3606ee BM220: Add string parser for upm parameters
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:19:37 -07:00
Adelin Dobre
6103516884 BISS0001: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:19:29 -07:00
Adelin Dobre
55f749529f BMA220: Add string based cons for Accelerometer
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:19:20 -07:00
Adelin Dobre
742150feea BH1750: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:19:11 -07:00
Adelin Dobre
87dc660bd6 ADXRS610Gyroscope: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:19:02 -07:00
Adelin Dobre
48ecaeaea9 ADXL345: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:18:53 -07:00
Adelin Dobre
56f4dd9a92 AT42QT1070: Add string based constructor for QTouch
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:18:45 -07:00
Adelin Dobre
93196d62cb APDS9930: Add string based constructor for Digital Proximity and Ambient Light Sensor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:18:36 -07:00
Adelin Dobre
cca6a86268 APDS-9002: Add string based constructor for Luminance Sensor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:18:28 -07:00
Adelin Dobre
4faf4ee816 AM2315: Add string based constructor for Temperature & Humidity Sensor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:18:20 -07:00
Adelin Dobre
d00dc3e332 ADXL335: Add string based constructor for Accelerometer
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:18:11 -07:00
Adelin Dobre
50961c6020 ADS1X15: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:18:02 -07:00
Adelin Dobre
82edcec766 AD8232: Fix some issues in sensor constructor
Signed-off-by: Adelin Dobre <adelin.dobre1994@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:17:53 -07:00
Adelin Dobre
db3b99a792 ADIS16448: Add string based constructor for Accelerometer
Signed-off-by: Adelin Dobre <adelin.dobre1994@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:17:44 -07:00
Adelin Dobre
aa87b14126 ADC121C021: Add string based constructor
Signed-off-by: Adelin Dobre <adelin.dobre1994@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:17:36 -07:00
Adelin Dobre
550e48e806 LDT0-028: Add string based constructor for Piezo Vibration Sensor
Signed-off-by: Adelin Dobre <adelin.dobre1994@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:17:28 -07:00
Adelin Dobre
d7fe4e717b Fix some inconsistences for the following sensors:
- a110x
 - abp
 - ad8232
 - adafruitms1438
 - adafruitss

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:17:18 -07:00
Adelin Dobre
7352aab3b0 Adafruit ServoShield: Add string based constructor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:17:09 -07:00
Adelin Dobre
7b5b02d859 Adafruitms1438: Add string based constructor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:16:58 -07:00
Adelin Dobre
9db28cd4fc PCA9685: Add string based constructor for PWM Controller
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:16:48 -07:00
Adelin Dobre
dfdc362c2c AD8232: Add string based constructor for Heart Rate Monitor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:16:37 -07:00
Adelin Dobre
d23183897d ABP: Add string based constructor for Pressure Sensor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:16:27 -07:00
Adelin Dobre
9ba309bc48 A110X: Add string based contsructor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:16:16 -07:00
mihais
32b73a1d25 Add string based constructor for Buzzer and an example to initialize it
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:16:06 -07:00
mihais
58ee51c767 Add string based constructors for UPM sensors
Signed-off-by: Mihai Stefanescu <mihai.stefanescu@rinftech.com>
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:15:56 -07:00
Serban Waltter
e4f106a0c7 Added iGas interface
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:15:45 -07:00
Serban Waltter
f28a6d2561 Added iMagnetometer interface
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:15:35 -07:00
Serban Waltter
aa966946d5 Added iGyroscope interface
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:15:24 -07:00
Serban Waltter
34bb12933d Removed old interfaces and replaced them with the new ones.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:15:13 -07:00
Serban Waltter
b6e53f7da8 Added bindings for iAcceleration sensors
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:15:01 -07:00
Serban Waltter
f992876461 Initial implementation of iAcceleration
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:14:52 -07:00
Serban Waltter
90524273ec Updated interfaces and sensors
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:14:43 -07:00
Serban Waltter
bfdd2c37c0 Update interface documentation
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:14:34 -07:00
Serban Waltter
57c0c8c235 Removed commented code
Ran clang-format on modified files

Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:14:26 -07:00
Serban Waltter
664c6dd8c6 Added bindings for iElectromagnet interface.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:14:17 -07:00
Serban Waltter
1f1510f38d Added getVolts() to iEMG interface and its sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:14:08 -07:00
Serban Waltter
c642e02a18 Added documentation to interfaces
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:13:59 -07:00
Serban Waltter
864e1eb073 Modified all iDistance sensors to return float.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:13:50 -07:00
Serban Waltter
ddcc4f467e Removed using namespaces from interface examples
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:13:41 -07:00
Serban Waltter
c16b33ae31 Updated Java CMake and examples to comply with the new interfaces.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:13:32 -07:00
Serban Waltter
9669f226b9 Updated CMake interface examples.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:13:23 -07:00
Serban Waltter
2abfd3f1ba Updated rule for ABP sensor.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:13:14 -07:00
Serban Waltter
2f0ae1cc49 Added bindings for iMotion and iPressure sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:13:06 -07:00
Serban Waltter
079e444fce Added bindings for iMoisture sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:12:57 -07:00
Serban Waltter
2405f933de Added bindings for iLight sensors.
Removed old interfaces C++ examples.

Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:12:49 -07:00
Serban Waltter
c3d5d951e1 dded bindings for iHumidity sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:12:40 -07:00
Serban Waltter
bbcee52880 Added bindings for iHeartRate sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:12:31 -07:00
Serban Waltter
87fc11adbe Added bindings for iHallEffect sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:12:22 -07:00
Serban Waltter
4addac7e01 Added bindings for iDistanceInterrupter sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:12:13 -07:00
Serban Waltter
57f03b79aa Added bindings for iDistance sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:12:04 -07:00
Serban Waltter
52b3087de9 Added new interfaces bindings
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:11:55 -07:00
Serban Waltter
efd36e57b0 Added modifications to cmake to create a separate lib for the new interfaces using SWIG.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:11:47 -07:00
Serban Waltter
8312e1d18f Added interface installing to cmake.
You can use it by setting IFACE_HDR with the names of the required interfaces or set module_iface in the sensor's CMakeLists.txt file.
Example files: src/abp/CMakeLists.txt src/lm35/CMakeLists.txt

Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:11:38 -07:00
Stefan Andritoiu
b917f0ca54 Added iElectromagnet interface
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:11:29 -07:00
Stefan Andritoiu
b058d341c0 Added iGps interface
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:11:20 -07:00
Stefan Andritoiu
1949916a8e Added iWater interface
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:11:12 -07:00
Stefan Andritoiu
f5f2920c70 Added iVDiv interface
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:11:03 -07:00
Stefan Andritoiu
fd34b9669d Added interface iButton
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:10:54 -07:00
Stefan Andritoiu
8693a72ed6 Added interface iRotaryAngle
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:10:46 -07:00
Stefan Andritoiu
75c7bd8d12 Added iProximity interface
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:10:37 -07:00
Stefan Andritoiu
6d8e6d8a9f Added interface iPH
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:10:29 -07:00
Stefan Andritoiu
2b36d30243 Added iOrp interface
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:10:20 -07:00
Stefan Andritoiu
a589f92cec Added interfaces iEC,iEmg,iClock,iHeartRate,iLineFinder
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:10:11 -07:00
Mihai Stefanescu
f035470822 Added initial interfaces and some sensors implementing them
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2019-04-04 22:10:03 -07:00
Mihai Tudor Panu
6bf21a23e7 kx122: fixed description string in sensor JSON
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-10-18 15:43:21 -07:00
Mihai Tudor Panu
16e72d2ff7 upm: version 1.7.1
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-10-11 21:47:41 -07:00
Mihai Tudor Panu
94be00a63d java-examples: fix reported minor vulnerabilities
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-10-11 20:06:13 -07:00
Mihai Tudor Panu
d5cb613ad0 sonar: ignore infinite loops in Java examples
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-10-11 15:33:59 -07:00
Mihai Tudor Panu
c0c37028e4 tests: use print function instead of statement
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-10-11 15:14:55 -07:00
Mihai Tudor Panu
eb8d64f52b bh17xx: use snprintf over sprintf
Fixes potential unsafe usage of sprintf

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-10-11 14:53:48 -07:00
Peter Robinson
1ddf969020 kxtj3: initialise all variables used in kxtj3 to 0
Newer compilers when used with security hardening options such as
-Werror=maybe-uninitialized so iniitial the variables to 0.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-10-11 12:20:06 -07:00
Manivannan Sadhasivam
85608a9f61 led: Update LED init API
mraa_led_init API expects led number. So, replace it with
mraa_led_init_raw for initializing an LED based on label.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-28 22:45:57 -07:00
Mihai Tudor Panu
4927311a0c upm: bump minimum MRAA required to 2.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-28 15:38:22 -07:00
Peter Robinson
b50b93272d Add initial details of Fedora packages
Fedora now ships upm 1.7.0 for Fedora 28 and later so include these
details to enable easier consumption by Fedora mraa/upm.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-28 14:58:16 -07:00
Peter Robinson
ed4fe56ef8 Use IdleNotificationDeadline as deprecated IdleNotification has been removed
In v8 API 6.5 the long deprecated IdleNotification has been removed so we
need to use IdleNotificationDeadline as nodejs 10.x uses newer v8.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-09-09 11:26:28 -07:00
Mihai Tudor Panu
67b77b78aa upm: version 1.7.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-06 08:00:22 -07:00
Mihai Tudor Panu
bc01f710ea docs: remove images and references to obsolete IDEs
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-06 07:55:48 -07:00
Mihai Tudor Panu
1af38e060e images: update Sparkfun license for images to CC BY 2.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-06 07:46:33 -07:00
Mihai Tudor Panu
62f84dcc47 mmap-gpio: remove deprecated mmapped gpio function calls
The memory mapped GPIO function calls have been deprecated and in turn removed from the UPM libraries. MRAA now provides the best/fastest GPIO access possible based on the selected platform/pin automatically.

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-04 07:53:16 -07:00
Sumit Garg
6ae7e9125b examples: gcc8 fixes for -Werror=format-truncation
Fixes below issues:
tm1637.cxx:69:29: error: "%2d%02d" directive output may be truncated writing between 5 and 15 bytes into a destination of size 5 [-Werror=format-truncation=]
          snprintf(myTime, 5, "%2d%02d", (hour + timezone + 24) % 24, min);

jhd1313m1.c:65:49: error: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 8 [-Werror=format-truncation=]
          snprintf(str, sizeof(str), "Hello World %d", ndx);

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-04 07:27:53 -07:00
Mihai Tudor Panu
07a9af07fe upm-c: remove uint8_t limit from pin/bus variables in structs
This removes unnecessary uint8 types from C driver structs that prevented some sensors from being initialized when connected to a MRAA subplatform.

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-09-04 06:32:12 -07:00
Mihai Tudor Panu
89e2ec870a bh17xx: minor documentation and formatting updates, added rohm to vendor groups
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-08-10 10:24:50 -07:00
Assam Boudjelthia
4935a16530 BH1749: Add library blocks to headers, JSON format, and change SWIG JAVA vector type
- Add library blocks to header files
- Removed unneccessay new lines in JSON file
- Change SWIG Java floatVector to uint16Vector

Signed-off-by: Assam Boudjelthia <assam.boudjelthia@fi.rohmeurope.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-08-09 12:03:40 -07:00
Assam Boudjelthia
9ef90ccb81 bh1749: Add examples for all languages
* Examples for C/C++/Python/Java/JavaScript
* Add Java example to CMakeLists

Signed-off-by: Assam Boudjelthia <assam.boudjelthia@fi.rohmeurope.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-08-09 12:03:35 -07:00
Assam Boudjelthia
5f2557b159 bh1749: C/C++ driver implementation for BH1749 color sensor
* Main C implementation
* C++ wrapper on C implementation

Signed-off-by: Assam Boudjelthia <assam.boudjelthia@fi.rohmeurope.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-08-09 12:03:29 -07:00
Assam Boudjelthia
09208e90d0 BH1792: Add examples for all languages
- Examples for C/C++/Python/Java/JavaScript
- Add build line for java BH1792_Example

Signed-off-by: Assam Boudjelthia <assam.boudjelthia@fi.rohmeurope.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-08-09 12:03:24 -07:00
Assam Boudjelthia
e0105cb601 BH1792: C/C++ driver for ROHM heart rate sensor
- Base C implementation, with all features and measurement modes (interrupts uses ISR)
- C++ wrapper around C implementation

Signed-off-by: Assam Boudjelthia <assam.boudjelthia@fi.rohmeurope.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-08-09 12:03:19 -07:00
Noel Eck
c2ce3e8222 gtest: Bump up to 3ms min-delay for CI
Much less stringent unit test for min timing delay.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-07-31 15:46:21 -07:00
Noel Eck
db3c73cbd1 utilities: Update time/r methods for LINUX
Default to MONOTONIC clock for timer methods to avoid falling victim to
clock corrections.  Changed signatures from accepting pointers since
this is not needed an complicates calls and Java/JS/Python bindings.

    * Switched from nanosleep to clock_nanosleep to allow developers to
      provide a clock for LINUX
    * Default upm_clock_init to CLOCK_MONOTONIC
    * Updated logic to calculating delay and elapsed to be more readable
    * Added ns flavors for completeness
    * Refactored all upm_* delay/timer methods
    * Added #else for preprocessor cases w/o an #else
    * Added test for AQI
    * Added test fixture with logic to identify a minimum delay time
      which is used as a metric for testing all delay methods
    * Much more lenient unit testing of delays to minimize false CI
      failures

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-07-31 14:20:30 -07:00
Noel Eck
be46240b8c gtest: Qualify nmea_gps test with nmea_gps target
Change the unit test CMakeLists to only build the nmea_gps unit test if
the nmea_gps target exists.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-07-30 10:05:07 -07:00
Noel Eck
ef81a20140 gtest: Added headers to unit tests
Added missing headers for the C++ unit tests.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-07-18 13:51:01 -07:00
Khem Raj
8a617aa904 upm: musl and gcc8 fixes
gcc8 detects that strncpy is overwiritng the null terminating character
the source strings are already initialized to 0 so memcpy would do the same
job

Fixes
rn2903.c:153:5: error: 'strncpy' output may be truncated copying 16 bytes from a string of length 511 [-Werror=stringop-truncation]
     strncpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

include sys/types.h for uint definition

uint is defined in sys/types.h, therefore this
header needs to be included, it gets exposed with
musl where this header is not getting included indirectly
as it is happening when building on glibc

Fixes build errors on musl e.g.
upm/src/kx122/kx122.hpp:456:31: error: 'uint' has not been declared
|        void setBufferThreshold(uint samples);
|                                ^~~~

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2018-07-13 13:36:39 -07:00
Noel Eck
a16d279b6f bma220: Added std_vector to SWIG interface file
Updated the bma220 SWIG interface file to use std_vector.i for JS and
Python.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-07-02 15:14:47 -07:00
Noel Eck
3e84b74bdf kxtj3: A few last-minute changes to the kxtj3 src
* Removed trailing whitespace
    * Fixed a few spelling errors
    * Switched to upm_delay_us for C source

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-21 10:33:38 -07:00
Assam Boudjelthia
186bbfab76 kxtj3: Add java/python/javascript examples
* Java/Python/Javascript examples
* change usleep to upm_delay_us in C++ example
* Add Java example to CMakeLists

Signed-off-by: Assam Boudjelthia <assam.boudjelthia@fi.rohmeurope.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-21 10:04:36 -07:00
Assam Boudjelthia
01cc3a0734 kxtj3: fixed requested issues
* Virtual destructor
* Add header guards
* Constructor default values
* Remove methods with pointer parameters in C++ code

Signed-off-by: Assam Boudjelthia <assam.boudjelthia@fi.rohmeurope.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-21 10:04:24 -07:00
Assam Boudjelthia
09e536b4ff kxtj3: C/C++ driver implementation with examples
Kionix tri-axis accelerometer sensor driver
* C implementation
* C++ wrapper
* C/C++ examples

Signed-off-by: Assam Boudjelthia <assam.boudjelthia@fi.rohmeurope.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-21 09:59:37 -07:00
Noel Eck
dc45cd7859 kx122: Adding missing header guards
Added pragma once to both headers.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-14 14:17:47 -07:00
Noel Eck
3790c0bbc1 rsc.py: Added snippet to test rsc_regs.h types
Since UPM Travis-CI runs ctests (one of which loads python examples),
the added lines would fail if the RSC_DATA_RATE and RSC_MODE have not
been included in the python rsc module.)

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-08 14:14:47 -07:00
Noel Eck
7a2332fa7d nrf8001: Updated to the mixed module init method
A few small changes to the nrf8001 which exposes a bit more via SWIG.
Also removed a method which had no implementation.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-08 14:14:47 -07:00
Noel Eck
330c94f1e2 CMake: Expose *_regs.h to SWIG wrappers
Some of the UPM libraries have a common C header with types used in both
the C and C++ source.  This commit adds these common header files to the
SWIG modules.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-08 14:14:47 -07:00
Noel Eck
9a959b578c nmea_gps: Added str method for coordinate struct
Provide a method to print out a coordinate structure which can be
dropped into online mapping pages.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-01 10:20:00 -07:00
Noel Eck
cdfb68c381 nmea_gps: Handle different GGA structure
Testing against ublox - handle null age of differential GPS.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-06-01 09:59:55 -07:00
Noel Eck
6228498147 nmea_gps: Added parsing TXT and bw calculations
Added code to parse GPTXT nmea sentences.  Added methods to calculate
sentences/second and raw bytes/second.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-05-25 15:51:13 -07:00
Noel Eck
8b4e1020f4 nmea_gps: Fix iterator
Small fixes for new nmea_gps code.  Fixed an iterator which could get
dereferenced incorrectly, and changed an auto to an explicit type.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-05-23 20:52:57 -07:00
Noel Eck
3a077df5f6 nmea_gps: Update to handle parsing into structures
NMEA GPS class now uses threads to handle parsing NMEA sentences.
Currently only handles GGA, GSV, and GLL types.  Added queues for
holding parsed data.

    * Parsing thread
    * Parse GPS Fix from GGA and GLL
    * Parse satellite info from GSV
    * Provide a queue for GPS fix data as well as raw sentences
      (for debugging)
    * Target structures and NMEAGPS class have a __str__() method
      which summarizes the objects into a std::string.  These are
      tied to the __str__ method in python
    * Added google unit test for the above functionality

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-05-23 08:30:22 -07:00
Noel Eck
1b5087105b docker-compose.yaml: Default to empty build type
Allow targets to specify a CMake build type but do not set a default
(removed 'Release').  The CXX flags for Release slow the builds down
significantly on Travis-CI (which can hit the time limit for jobs).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-05-14 14:30:49 -07:00
Noel Eck
ec9143e976 debug/release: Add minimal debug/release CI builds
This commit enables both a minimal DEBUG and minimal RELEASE build on
Travis-CI.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-05-14 10:08:22 -07:00
Mihai Tudor Panu
37642f3b01 bmx055: fix typo in cmakelists causing bmc150 header not to install
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-05-03 11:37:59 -07:00
Noel Eck
17110d41d0 mhz16: Remove post-throw returns + small fixes
Removed the 'return false;' lines after throws since these are not
needed and are generally flagged by static analysis tools.  Also removed
a EOL spaces and added initializers for member variables at declaration
(since more than one constructor exists).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-27 11:34:49 -07:00
g-vidal
dd73c4aa45 mhz16: Adding raw path constructor for UART
This commit adds an additional constructor to the MHZ16 which takes a
path (string reference) to a UART device on the filesystem.

    Example: MHZ16("/dev/ttyS0");

    * Added constructor for device path w/default
    * Removed unused global consts from header

Signed-off-by: g-vidal <gerard.vidal@ens-lyon.fr>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-27 11:17:47 -07:00
Noel Eck
8f63914d76 docs: Clarification for lib-level 'make-install'
While a 'make install' under a target library directory (build/src/lcd)
will build all dependencies required to make the target, it will NOT
install those dependencies.  This can cause confusion for developers.
Adding a note to the build docs to clarify this case.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-17 15:37:12 -07:00
Noel Eck
306872619a examples: Remove double-backslash from install path
This commit removes the double-backslash when installing the examples.

Before:
   .../upm//examples/...

Before:
   .../upm/examples/...

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-16 10:42:23 -07:00
Noel Eck
ad15b27cb1 kx122: Fix for uninitialized variable w/release
Fix so a release build doesn't flag reg_val as uninitialized.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-06 16:03:08 -07:00
Antoine W. Campagna
b55501e327 kx122: Note return method change in apichanges.md
Updated the API documentation with changes to the kx122.  Removed a few
extra EOL spaces.

Signed-off-by: Antoine W. Campagna <AntoineW@Campagna.org>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-02 10:38:03 -07:00
Antoine W. Campagna
e99f1d73fd kx122: Return values instead of receiving pointers
For better compatibility with Python

Signed-off-by: Antoine W. Campagna <AntoineW@Campagna.org>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-02 09:56:27 -07:00
Noel Eck
fc56e56048 SWIGPYTHON: Apply unsigned int to uints for python
To handle uint data types in python bindings, apply unsigned int
globally.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-02 09:56:27 -07:00
Noel Eck
757683b2ca Cordova: Renamed cmake Find module for bindings
Renamed find module from FindCordova to FindUpmCordovaGenerator to be
more descriptive with the intent of the find module.  Updated the find
module to use find_package_handle_standard_args so a version can be
specified and handle REQUIRED keyword.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-02 09:45:48 -07:00
Noel Eck
b09944f4b8 Cordova: Added cordova job to travis matrix
The UPM Travis-CI will now attempt to build the Cordova bindings for
UPM as a separate target.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-02 09:45:24 -07:00
Lin Sun
f45429e1f0 cordova: Add UPM cordova binding via Java packages
The UPM Cordova binding generator creates Cordova plugs for each Java
package when BUILDCORDOVA=ON and BUILDSWIGJAVA=ON.  This requires an NPM
install of the UPM Cordova plugin generator.  Cordova bindings are built
under <build-dir>/cordova.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-04-02 09:42:12 -07:00
Antoine W. Campagna
54c6d294af kx122: Allow faster SPI bus frequency
The hardcoded frequency of 10kHz was much slower than the capacity of the device

Signed-off-by: Antoine W. Campagna <AntoineW@Campagna.org>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-30 09:58:06 -07:00
Noel Eck
83f541a5db Tsl2561_Example: Removed duplicate Tsl2561_Example
It appears that an additional tsl2561 Java example existed.
Removed the *newer* Tsl2561_Example.java in favor of the original
example.  Updated all corresponding collateral which references the
Tsl2561_Example.java file (CMake and library descriptor file).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-19 10:39:26 -07:00
Noel Eck
090ce2040e ctest: Add module path to sys path
Updated the pythonloader test module to always append the module's path
to the system path.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-15 11:10:00 -07:00
Noel Eck
76dd42a47d utilities_tests: Update us range for gtest
Be a bit more lenient with the acceptable range for the microsecond
flavor of upm_delay (+/- 150us instead of +/- 100us).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-13 15:25:24 -07:00
Noel Eck
63c3b4bc69 travis-ci: Added minimal travis job
Added an additional job to the CI matrix which does a minimal UPM
build (only C, C++, and unit tests) which can run and pass/fail quickly.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-13 15:08:51 -07:00
Noel Eck
7254d5f75e gtest: Added custom target for all unit tests
Create a target which depends on all unit test executables for ease of
building/running.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-13 15:08:15 -07:00
Noel Eck
f907ebcf2e mraa: Temporarily turn off deprecated warnings
MRAA deprecated mraa_gpio_use_mmaped which gets flagged as a warning
in UPM and then fails since -Werror is set.

For now, don't flag deprecations as warnings.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-13 14:48:53 -07:00
Alex Tereschenko
334f7365f0 sonar-scan.sh: correct SonarCloud URL
According to SonarCloud's email notification,
they're dropping sonarqube.com in favor of sonarcloud.io.

Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-05 11:37:50 -08:00
Noel Eck
41e80d611e json: Added nlohmann's JSON C++ header
Adding JSON header for serializing/deserializing library descriptor JSON
files.

    * Added header
    * Added simple unit test to verify functionality

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-02 16:19:04 -08:00
Noel Eck
92b0919f56 gtest: Added Google Test
Added Google Test for unit testing.  Currently NOT required by UPM
CMake.

    * Added a test fixture for the utilities library.
    * Fixed bug in delay methods provided by utilities library.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-03-02 12:03:24 -08:00
Noel Eck
c54d6de054 JAVA: Unified Java Example names
Unified all Java examples to *match* <LIBRARY>[_otherstuf]_Example.java.
Note, a handful of the examples have a pseudo-random string for the
first component (see FlexSensor_Example.java, ideally this would be
Flex_Example.java).

This commit allows for quick development on a single sensor library
since a -DMODULE_LIST=mysensorlib now works with Java examples
(previously Java examples would fail generation when using
MODULE_LIST).

    * Renamed examples
    * Updated class names
    * Updated library descriptor .json files
    * Updated sample mapping file

TODO: Make this work like the C/C++ examples - grab the target library
name from the filename and grab all dependencies from that target
library.  Fix the handful of example names which don't conform.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-27 15:28:48 -08:00
Noel Eck
86e8471cad kx122: Disable implicit copy/assignment operators
Don't let a KX122 instance be copied since copies would share the C
device pointer.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-27 09:42:09 -08:00
Noel Eck
2c17998ac9 android: Fix for java file check
Skip library build directories which don't have any java files.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-26 15:20:31 -08:00
Noel Eck
a43bcfe8d2 kx122: Add Java/Javascript/Python examples
Implemented a swig interface file for the kx122 and added corresponding
swig language examples.  Also added an STL vector flavor for getting
acceleration values from the kx122.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-26 14:36:06 -08:00
Noel Eck
1be36ec1df kx122: Small fix-ups for kx122 addition
A few small changes for the kx122 library.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-26 10:34:35 -08:00
Samuli Rissanen
e4dd6457bb kx122: Added missing function implementation
Signed-off-by: Samuli Rissanen samuli.rissanen@hotmail.com
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-23 20:21:43 +02:00
Samuli Rissanen
ad36f83857 kx122: Moved definitions, documentation tweaks
Signed-off-by: Samuli Rissanen <samuli.rissanen@hotmail.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-23 13:17:37 +02:00
Samuli Rissanen
2a17fe094e kx122: Added C and C++ examples
Signed-off-by: Samuli Rissanen <samuli.rissanen@hotmail.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-22 13:21:01 +02:00
Samuli Rissanen
8f99289a48 kx122: Added driver files to src
Signed-off-by: Samuli Rissanen <samuli.rissanen@hotmail.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-22 13:04:31 +02:00
Noel Eck
829da899fc docs: Updated doc dependencies for all languages
This commit changes how the UPM doc targets build.  The doc targets no
longer rebuild each time.

    * doc (doxygen) target depends only on C/C++ source
    * jsdoc (yuidoc) depends on doc and a stamp file
    * pydoc (sphinx) depends on the output index.xml from doc
    * pyupm_doxy2swig depends on python2 python extensions

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-21 15:08:03 -08:00
Noel Eck
20aa4962f0 SWIG: Moved common SWIG syntax to ${libname}.i
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>
2018-02-21 10:51:44 -08:00
Noel Eck
3d674efb51 CTest: Removed failing JSON lint test
Currently failing since a dependency has been deprecated.  Will enable
once a solution is in place.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-20 14:58:05 -08:00
Mihai Tudor Panu
cc7fec9ae0 upm: version 1.6.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-02-20 07:45:15 -08:00
Mihai Tudor Panu
4a1eb99d6d doxygen: updated library brief description tags
Touched on all library brief descriptions for better integration with ISS and fixed a few typos and connection tags in the process.

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-02-14 11:33:09 -08:00
Mihai Tudor Panu
a12baf379f doxygen: updated descriptions to clean up @con tags for xml generation
This ensures the generated xml paragraphs for the connection field won't have nested children and hence should be readable by the ISS parser properly

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-02-13 11:37:08 -08:00
Noel Eck
38817b72dc pydoc: Fixed mix of python2/3 modules with pydoc
The pydoc target copies python binaries and modules to pyupm.  Since the
find command didn't make a distinction between python2/3 modules, a mix
of each could end up in pyupm.  If sphinx runs under a mismatching
interpreter (mismatching against the python binaries) the build would
fail with load errors

    * Only copy python2 modules (and binaries) to pyupm directory
    * Explicitly run the sphinx tools w/python2
    * Removed doc dependency to each library target (not needed).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-12 16:15:59 -08:00
Noel Eck
fe7bd75c91 C: Fixes for sign compares in C libraries
Added explicit error for sign compares to CMake.  Updated a handful of C
source which compared unsigned vs signed.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-07 14:29:35 -08:00
Noel Eck
460fdc2eb5 Travis-ci: Switch from curl to wget for automation
Currently ~2/5 UPM travis-ci jobs are failing with an SSL error from curl
when grabbing the 1.9.0 version of docker-compose.  This commit is a
brute-force attempt to make this go away.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-07 14:11:10 -08:00
Mihai Tudor Panu
9d51454290 FindNodejs: extend search path to detect ubuntu provided nodejs
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-02-07 10:36:42 -05:00
Noel Eck
6f72c52a44 CMake: Update FindNpm module and usage
FindNpm REQUIRE functionality was not provided by FindNpm.cmake.
UpdatedUpdated FindNpm to extract version, global node_modules
directory, and to fail if REQUIRE was set and npm was not found.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-06 14:11:28 -08:00
Noel Eck
7d83e8c569 FindNodejs: Updated to find node<version>
Updates to the FindNodejs.cmake module to find newer installs of nodejs
across other distros.  For example openSUSE: /usr/include/node6/node.h

    * Added PATH_SUFFIX to find_path for node.h.
    * Standardized usage of message() (added STATUS)
    * Call find_package_handle_standard_args with version
    * Reformatted to look uniform.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-02-06 09:35:57 -08:00
Alex Tereschenko
96bcfc9128 lis2ds12: remove surplus accFactor coefficient
As we've established in PR #623 (adding lis3dh support), this coefficient
is not needed and actually is cancelled out in calculations, so remove it.

Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
2018-01-28 11:00:27 +01:00
Noel Eck
6be656d5b0 Java: Added loadLibrary macro for packages
These four libaries were previously blacklisted for building Java
packages.  Updating to include loadLibrary macro.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-24 14:55:44 -08:00
Noel Eck
3cfea676e2 lcd: Renamed 'i2clcd' library to 'lcd'
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>
2018-01-24 13:00:53 -08:00
Noel Eck
f64060b9d2 pydoc: Removed include for sensor specific _doc.i files
There is a single monolithic .i file which provides documentation for
the python methods.  The per-sensor flow is not used.  Removing for now,
may investigate implementing a per-sensor doc.i file again in the future.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-24 11:55:54 -08:00
Noel Eck
36ebd15abc java_blacklist: Enable Java blacklisted modules
Enable building java wrappers for a few that were previously
blacklisted.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-24 11:55:54 -08:00
Noel Eck
23a57b8c90 nrf24l01: Initialize member variable
Initialize a member variable pointer to NULL.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-24 10:42:05 -08:00
Noel Eck
666452e873 SWIGJAVA: Remove the last JAVA ifdefs from src
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>
2018-01-24 09:31:05 -08:00
Noel Eck
d49ab2ac95 SWIG: Added documentation to _upm.i
Includes documentation on the macros provided as well as a top-level
description of the file.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-24 09:31:05 -08:00
Noel Eck
d06e632f3b SWIG: Move from include->import
Do no expose _upm.i in the wrapper code.  Also updated syntax to use a
relative path to _upm.i.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-24 09:31:05 -08:00
Serban Waltter
e192a125f3 Added new macros for installISR and applied where possible. 2018-01-24 09:31:05 -08:00
Serban Waltter
63b2b33df7 Moved SWIG code from C++ files (hpp and cxx) to SWIG interface files (.i). Added getter/setter methods for classes with protected or private vars. 2018-01-24 09:31:05 -08:00
Serban Waltter
2551596309 Added the JAVA_JNI_LOADLIBRARY macro for the jniclasscode pragma included in _upm.i for all java SWIG interface files. 2018-01-24 09:31:05 -08:00
Noel Eck
6725559669 JAVA: Remove library source compile from JAVA packages
Previously the JAVA packages re-compile UPM library source files.  This
was a work-around for compiling JAVA-specific functionality from the UPM
source into the SWIG'ed JAVA pacakges.

This commit removes the source from the JAVA SWIG compile and provides
an example on how to add the JAVA-specific code with a swig extend call.

    * Added _upm.i file for %import (not %include)
    * Added macros to _upm.i; 1 which performs the loadLibrary, and one
      which adds the java installISR runnable.
    * Updated the src/CMakeLists.txt file to NOT build library src into
      pacakges.
    * Updated the a110x library with examples on how to use the macros.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-24 09:30:23 -08:00
Noel Eck
680649ba6f zfm20: Use mraa::Uart instead of tty
Updated the ZFM20 class to use UART functionality provided through the
mraa::Uart class instead of using the UART directly.

    * Switch to mraa::Uart
    * Added raw uart string constructor, closes #621
    * Updated examples
    * Added a common.i to minimize interface duplication
    * Removed pointers from C++ functions where references are
      preferable
    * Removed dependency on termios
    * Added typedefs to handle pass-by-reference
    * Removed flushes
    * Removed code after throws

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-23 15:51:54 -08:00
Noel Eck
74b5ec00dc Java: Added an unresolved symbol check for Java packages
Tell the linker to error on unresolved symbols.  This enables future
Java work (removing library source from Java packages) by flagging
missing reference.s

TODO: Move this up one level to all libraries.  The reason this was not
done in the same commit is that the NodeJs libraries contain unresolved
references which must come from node but remain unresolved in the NodeJs
packages.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-22 16:47:42 -08:00
Noel Eck
abefdfc756 CMake: Moved swig macros to functions
Switched these macros to functions so changes at the
upm_swig_<extension> level don't propogate further than necessary.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-22 16:47:42 -08:00
Noel Eck
f97a62b055 Threading: Scrubbed usage of threading in libraries
Removed include for pthreads from libraries where it appears NOT to be
used.  Added ${CMAKE_THREAD_LIBS_INIT} to CMakeLists.txt for libraries
which appear to require threading.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-22 16:47:42 -08:00
Abhishek Malik
7422ec937c JSON: Fixing Sensor Name field
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2018-01-18 13:26:34 -05:00
Alex Tereschenko
a842898bd5 lis3dh: add sensor support based on lis2ds12 module
Adding STMicro LIS3DH sensor support. This module is based on
the one for lis2ds12 (thanks, jontrulson!), but as sensors are
noticeably different, the contents underwent major rework.

Examples and basic API are left the same.

Tested on Intel Edison with Arduino board using both I2C and SPI.

Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
2018-01-16 20:30:34 -08:00
malikabh
76949d9358 JSON: Correcting the Sensor Class field
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2018-01-16 15:23:33 -05:00
Mihai Tudor Panu
b244fe45d1 led: update to use gpioled if desired, better C code wrapper
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-01-12 08:19:44 -08:00
Mihai Tudor Panu
b367a63010 upm: fix pin and bus types to allow subplatform usage in C libs
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2018-01-12 08:15:36 -08:00
Noel Eck
a5680d9b9a Doxygen: Turn off messages
Turn off non-warning/error doxygen messages to clean up the build log.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-11 11:53:50 -08:00
malikabh
a6111a83b5 JSON: Correcting bad sensor names
Signed-off-by: malikabh <abhishek.malik@intel.com>
2018-01-10 13:47:57 -05:00
malikabh
450f071f7d JSON: Correcting the Sensor Class tag BMX055
Signed-off-by: malikabh <abhishek.malik@intel.com>
2018-01-10 11:48:18 -05:00
Alex Tereschenko
82c8acf0fe examples/lis2ds12.py: fix comment typo
Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
2018-01-07 19:46:05 +01:00
Alex Tereschenko
a65cd2e59b lis2ds12.{h,hpp}: add missing parameter description
Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
2018-01-04 16:29:06 -08:00
Noel Eck
c154ec6cb8 ad8232: Removed C example (doesn't exist)
Previous commit failed because the C examples doesn't exist.  The
version BEFORE that passes even though the C example filename pointed to
a test for a different sensor library.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-12-05 16:31:18 -08:00
Noel Eck
d9d48e939f ad8232: Fixed copy/paste error in json
bmp280.c -> ad8232.c

Also converted to unix line endings.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-12-05 16:09:06 -08:00
Noel Eck
b1a49f0d3c rhusb: Memory leak fix in sendCommand
Fix for case where dataAvailable always returns true.  Previously, if
this ever happened (eg mock platform), string resp is resized until the
system is out of memory.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-11-27 15:40:03 -08:00
Noel Eck
ac89a4a130 examples: Add install component for all examples
Provide the functionality to install all UPM examples to
DATADIR/upm/examples.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-11-16 12:07:00 -08:00
Noel Eck
f848deb35b components: Refactor UPM install components
Removed the per-target install component in favor of a limited set of
insinstall components.

Available install components are: "upm" "upm-dev" "upm-java"
"upm-nodejs" "upm-python2" "upm-python3"

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-11-16 12:00:42 -08:00
Noel Eck
71b2b9b1fc JSON: Install JSON library descriptor files
Install the provided json files to DATADIR.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-11-10 16:17:18 -08:00
Noel Eck
18b8ca2633 examples/python: Add/update shebang line
Added/updated the shebang line on all python examples with:

Also chmod +x a few of the python examples.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-11-02 15:39:45 -07:00
Noel Eck
a96c607fb5 pyupm_led: Fixed example for led
This commit fixes issue 614.  Updated the example to use pyupm_led as
the module name (and skip the local module rename).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-11-02 14:52:41 -07:00
Noel Eck
bc4f124d54 sensortemplate: Use SensorTemplate as class name in json
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>
2017-11-02 13:21:27 -07:00
Nicolas Oliver
35e4fc012e travis: build examples in additional jobs
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
2017-10-19 13:57:41 -07:00
Noel Eck
4037ec517c curieimu.hpp: Add pthread include to lib header
CurieIMU example includes curieimu.hpp, which uses pthread symbols but
does not include pthreads.h, and thus fails building.  The library
builds successfully because the source file includes the pthread
header before including curieimu.hpp.

    * Moved pthread.h include from src to header.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-10-12 10:51:09 -07:00
Nicolas Oliver
40084ea651 docs: improve android things docs
* 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>
2017-10-11 14:59:55 -07:00
Nicolas Oliver
91876d48ed travis: use images from inteliotdevkit
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
2017-10-11 14:46:02 -07:00
Mihai Tudor Panu
b9010059ad upm: v1.5.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-10-10 12:07:59 -07:00
Mihai Tudor Panu
166332744e docs: updated group inclusion for 2 temperature sensors
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-10-10 12:07:32 -07:00
Mihai Tudor Panu
614c4a516b ecezo: use strncat instead in send_command()
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-10-10 10:48:17 -07:00
Nicolas Oliver
40e73e648a docs: require specific version of doc tools
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
2017-10-05 09:48:26 -07:00
Mihai Tudor Panu
153d8cfb12 doxy: ignore sensortemplate for documentation
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-10-03 17:50:51 -07:00
Mihai Tudor Panu
cffaf5c6ba documentation.md: finalized content for writing sensor documentation
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-10-03 17:41:24 -07:00
Mihai Tudor Panu
ab841ef591 documentation.md: updated to explain the new JSON format for sensors
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-10-03 16:11:23 -07:00
Nicolas Oliver
5228df9a8b docs: remove empty lines in create_java_bindings
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
2017-10-02 17:29:36 -03:00
Benjamin Cabé
b75a9daee4 fix markdown syntax
Signed-off-by: Benjamin Cabé <benjamin.cabe@eclipse-foundation.org>
2017-10-02 17:29:36 -03:00
Abhishek Malik
6cc5c9691d Examples: Removing MRAA reference from examples
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-10-02 10:41:07 -07:00
Mihai Tudor Panu
e8aeaff162 curieimu: adding missing include for c++ example
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-09-27 16:52:24 -07:00
Abhishek Malik
694034d052 Cmake: Bumping up required MRAA version
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-26 18:58:54 -07:00
Mihai Tudor Panu
fc17744104 readme: more small changes and added logo
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-09-25 16:56:53 -07:00
Mihai Tudor Panu
3b8f215590 docs: minor update on permission requirements
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-09-25 13:49:11 -07:00
Mihai Tudor Panu
e22f62f948 readme.md: update contents and ide page links/images
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-09-22 11:33:41 -07:00
Noel Eck
5cefe7f5f3 examples: Remove heap allocation from C++ examples
Cleanup of UPM C++ examples.  Switched from heap allocation to
stack allocation when possible.  This simplifies the samples since it
removes the need for explicit memory management.  A script was used to
identify and replace pointer use.  To simplify the replace script, I
re-formatted the C++ examples using the UPM .clang-format file.
Unfortuantely this changes the look of the UPM C++ examples to a large
degree.  However, examples will now have a standard look/feel and
uniform formatting.

    * Ran clang-format w/provided UPM .clang-format file
    * Removed new's/delete's whenever possible (left those in interface
      examples)
    * Added IIO sensor library implementation of callback void* arg
    * Converted all sleeps to upm defined delays (added header when
      necessary)
    * Scrubbed CXX example includes

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-09-19 12:41:58 -07:00
Brendan Le Foll
bd6e4ec786 cmake: use swig_add_modules if cmake > 3.7
swig_add_module has been deprecated

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-18 14:42:07 -07:00
Rex Tsai (蔡志展)
2f9132c429 AQI: Fix another typo in AQI calculation tablet.
Fixed the table.
Update the link of reference document.

Signed-off-by: Rex Tsai (蔡志展) <rex.cc.tsai@gmail.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-18 11:49:12 -07:00
Rex Tsai (蔡志展)
e734459ddd AQI: Fix a typo in AQI calculation tablet.
Signed-off-by: Rex Tsai (蔡志展) <rex.cc.tsai@gmail.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-18 11:48:47 -07:00
Abhishek Malik
cc3721128e JSON: Fixing new JSONs
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-14 22:17:43 -07:00
Abhishek Malik
28380f2bfa Minor JSON fixes
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-14 17:52:55 -07:00
Abhishek Malik
303323fa3a JSON: Adding ctest
This commit adds node based tests provided by Nico to the ctest
framework already established in UPM.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-14 17:52:52 -07:00
Nicolas Oliver
0bf4a38f5e check for examples and images path
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-14 17:52:49 -07:00
Nicolas Oliver
e441c343d8 use sensortemplate.json metadata to test json files
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-14 17:52:47 -07:00
Mihai Tudor Panu
60816d8f2a sensortemplate: added JSON for sensortemplate
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-14 17:52:45 -07:00
Nicolas Oliver
ef681a0ab5 add initial jsonlint and mocha test for json files
[ci skip]

Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-09-14 17:52:17 -07:00
Abhishek Malik
f37236fa01 MMA7660: changed mraa i2c read call
The mraa_i2c_read_bytes_call didn't work with firmata based
platforms and was changed to mraa_i2c_read_bytes_data call which
worked.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-28 16:40:16 -07:00
Jon Trulson
aa047d6b5c bno055: enhance error detection and propagation
This patch reworks error handling in the C driver to more reliably detect
errors, and for C++, throw exceptions when they are detected.

The C++ API is unchanged aside from the fact that more methods will
throw an exception on errors now.

This addresses the error handling deficiencies reported in Issue #593.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-21 13:53:27 -07:00
Abhishek Malik
0345a8e9f1 Fixing minor issues in json files
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-18 12:06:16 -07:00
Abhishek Malik
5bdd7a4c03 JSON: Modifying access permissions
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-18 12:02:32 -07:00
Wai Lun Poon
3ca7889755 fixed JSON keys
Signed-off-by: Wai Lun Poon <wai.lun.poon@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-18 11:55:39 -07:00
Wai Lun
c5cdfc702c added JSONs form Blain
Signed-off-by: Wai Lun Poon <wai.lun.poon@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-18 11:55:39 -07:00
Nicolas Oliver
a99e32fc13 sonar: remove sonar-scan from allow_failures
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
2017-08-18 11:20:43 -07:00
Nicolas Oliver
9e09f899cf Travis CI and Documentation Generation Improvements
* 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>
2017-08-14 12:46:31 -07:00
Stefan Andritoiu
ae77966204 java: added some of the missing samples
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-10 16:57:11 -07:00
msgtfrank
b0a842229a Added another batch of JSONs(39)
Signed-off-by: msgtfrank <frankww1@gmail.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-10 16:50:18 -07:00
msgtfrank
0f3f0e02ae Added another JSON file...
Signed-off-by: msgtfrank <frankww1@gmail.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-10 16:20:11 -07:00
msgtfrank
287d716401 Added Another set of JSON files(61)
Signed-off-by: msgtfrank <frankww1@gmail.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-08-10 16:19:47 -07:00
Mihai Tudor Panu
db89d872b4 docs: updated manufacturer field for bosch sensors
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-08-02 17:19:12 -07:00
Mihai Tudor Panu
c46fb64cac json: fix typo and misplaced comma
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-08-02 16:20:21 -07:00
Nicolas Oliver
1f97840fee sonar: add sonar.java.binaries parameter
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
2017-07-31 11:35:50 -07:00
Nicolas Oliver
7bee29ba62 sonar: fix sonar scan
remove utf8 characters from:
  * examples/c++/mcp9808.cxx
  * examples/c++/tmp006.cxx
  * src/bmp280/bmp280.c
  * src/max30100/max30100.c

add -j8 options to make command in scripts/sonar-scan.sh

Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
2017-07-28 14:56:57 -07:00
Noel Eck
24b6cbcc85 permissions: No need for files to be executable
chmod ugo-x for the following files.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-07-27 11:12:59 -07:00
Nicolas Oliver
ab4eeea61e travis: improve build process and expand build matrix
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>
2017-07-25 13:19:44 -07:00
Abhishek Malik
98811b0fb7 BUZZER: Fixing firmata related issue
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-07-17 10:33:51 -07:00
Noel Eck
f92c0c120e ms5611: Fix for i2cbus assignment
Make sure I2c bus is initialized with provided bus number.

Removed unnecessary mraa::Result variable in favor of immediate checks.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-07-14 16:05:39 -07:00
Noel Eck
01036f7dae autodoc: Removed autodoc directive from py swig
Since UPM uses doxy2swig, there is no need for the swig interface
file autodoc for python.

Also, turned on the doxy2swig --quiet switch which cleans up the build
log a tiny bit.

This removes a redundant chunk of documentation from python modules
(per each function).

Old:

           def pH(self, samples=15):
         +->   """
         |     pH(DFRPH self, unsigned int samples=15) -> float
         |
         |     Parameters
         |     ----------
     swig|     samples: unsigned int
         |
         |     pH(DFRPH self) -> float
         |
         |     Parameters
         |     ----------
         +->   self: upm::DFRPH *

         +->   float pH(unsigned int
         |     samples=15)
         |
         |     Take a number of samples and return the detected pH value. The default
         |     number of samples is 15.
         |
doxy2swig|     Parameters:
         |     -----------
         |
         |     samples:  The number of samples to average over, default 15
         |
         |     The pH value detected
         |     """
         +->   return _pyupm_dfrph.DFRPH_pH(self, samples)

   New:

           def pH(self, samples=15):
         +->    """
         |      float pH(unsigned int
         |      samples=15)
         |
         |      Take a number of samples and return the detected pH value. The default
         |      number of samples is 15.
         |
doxy2swig|      Parameters:
         |      -----------
         |
         |      samples:  The number of samples to average over, default 15
         |
         |      The pH value detected
         +->    """

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-07-14 15:33:59 -07:00
Noel Eck
5e7a8b41a3 memory: Hide all copy/assignment ops for class w/heap allocation
Many of the UPM libraries allocate space on the heap but do not
explicitly handle copying and assignment.  This commit uses C++11 delete
to forbit both the copy and assignment operator for these classes.

The C++ examples which used assignment operators to initialize class
instances were also updated since it did not appear necessary in those
cases to use the assignment operator.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-07-14 11:47:06 -07:00
Noel Eck
f59f3131bb dfrph.hpp: Don't allow copies of DFRPH - cont...
Also define an explicit private assignment operator.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-07-13 17:13:38 -07:00
Noel Eck
539fbe7c75 dfrph.hpp: Don't allow copies of DFRPH
Small change to explicitly hide the copy constructor for DFRPH.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-07-13 14:26:37 -07:00
Noel Eck
5a1f27a92d CMakeLists.txt: Cleanup MODULE_LIST usage
Removed redundant usage of MODULE_LIST and SUBDIRS variables.
Treat utilities and interfaces directories the same (add both if not
added when using MODULE_LIST).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-07-13 10:31:39 -07:00
Noel Eck
f4da94a06e cmake: Fix race condition to missing upm_interfaces.jar
The custom command used to create a per-library jar can hit a race
condition where upm_interfaces.jar is in the process of building when
the javac command runs for a target.  This is because the javac command
was provided a full path to the upm_interfaces.jar file for ALL java
targets (even targets which do NOT use the interfaces).

Example:
    javac -cp path/to/upm_interfaces.jar

If upm_interfaces.jar does not exist, javac is fine.
if upm_interfaces.jar exists and is a valid file, javac is fine.
If upm_interfaces.jar exists and is empty, javac throws an error.

For the targets which do not have a dependency on the interfaces,
it's possible one will run javac when the upm_interfaces.jar file is
building in parallel and will fail since the file is
open/incomplete/empty.

The fix is to only provide the full path to the upm_interfaces.jar file
for targets which depend on the interfaces.  These will pass since they
depend on the java interfaces target.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-07-13 10:29:53 -07:00
Budanov
e190bb9d60 json: added another componet for ads1x15
Signed-off-by: Budanov <daniil.budanov@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-07-12 14:57:16 -07:00
Abhishek Malik
bac9e3bbc0 P9813: Minor bit mask fix
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-07-11 17:38:39 -07:00
Abhishek Malik
1647d8bc08 JSON: Making minor changes
JSONs changed:
- lp8860
- max44009
- ms5611

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-07-06 16:35:52 -07:00
Mihai Tudor Panu
6bfb07e46a bmp280.json: fix example names for bme280
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-07-06 14:35:40 -07:00
sisinty sasmita patra
c25fa47e2f JSON: Fixed minor issues in JSON files
Signed-off-by: sisinty sasmita patra <sisinty.s.patra@intel.com>
2017-07-06 14:04:40 -07:00
Budanov
7cd290901d json: changed JSON files to new spec
Signed-off-by: Budanov <daniil.budanov@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-07-05 18:28:51 -07:00
sisinty sasmita patra
aaf733f41b JSON: Updated JSON files
Signed-off-by: sisinty sasmita patra <sisinty.s.patra@intel.com>
2017-07-05 17:12:07 -07:00
Abhishek Malik
ac4a10e248 JSON: Changes to field names
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-07-05 15:34:32 -07:00
Mihai Tudor Panu
8a4e06d856 json: adding more JSON spec examples
JSON files for: bmp280, button, buzzer, led, mic, temperature.

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-07-05 14:54:17 -07:00
sisinty sasmita patra
9482d6bb74 JSON: Adding JSON files for following sensors
hlg150h
    lp8860
    max44009
    ms5611
    si1132

Signed-off-by: sisinty sasmita patra <sisinty.s.patra@intel.com>
2017-07-05 07:50:31 -07:00
Abhishek Malik
0cb93331ee JSON: Adding new files
Adding JSOn files for:
- sx1276
- tmp006
- abp
- rsc
- veml6070

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-06-30 16:12:58 -07:00
Budanov
f01c89b95a added sensor JSON docs
Signed-off-by: Budanov <daniil.budanov@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-06-30 16:08:06 -07:00
Stefan Andritoiu
4344151405 java: Renamed stdvector interface file to reflect the fact that it is only used in Java
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-27 12:18:03 -07:00
Stefan Andritoiu
74cb3504f3 java: updated examples to use AbstractList<> for data containers
Signed-off-by: Bogdan Ichim <bogdan.ichim@rinftech.com>
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-27 12:17:12 -07:00
Stefan Andritoiu
ac031ba9a8 java: converted wrappers for std::vector to inherit from AbstractList<>
Signed-off-by: Bogdan Ichim <bogdan.ichim@rinftech.com>
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-27 12:16:19 -07:00
Stefan Andritoiu
65726087bc java: removed unnecessary generated wrapper objects for std::vector
Signed-off-by: Bogdan Ichim <bogdan.ichim@rinftech.com>
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-27 12:15:23 -07:00
Mihai Tudor Panu
dc03eec56f docker: enable gcc4, gcc6 and node6 builds
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-15 11:10:18 -07:00
Mihai Tudor Panu
c1903b8c39 docker: use default g++ and swig from container for build
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:46:29 -07:00
Mihai Tudor Panu
0cb7d3f9b4 tests: harden tests for handling universal line endings
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:30:54 -07:00
Nicolas Oliver
874eacf12e docker-compose.yaml: fix typo and node version
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:18:20 -07:00
Nicolas Oliver
3e6fb61a20 .travis.yml: update docker-compose to 1.9.0
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:18:20 -07:00
Nicolas Oliver
8e7ac713c4 docker-compose.yaml: enable environment configuration of build variables
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:18:19 -07:00
Nicolas Oliver
54c1b0ce4b Dockerfile: configure compiler first for library build
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:18:19 -07:00
Nicolas Oliver
53456d9138 .travis.yaml: add java with clang to build matrix
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:18:19 -07:00
Nicolas Oliver
7ec1765766 docker-compose: enable java build with clang
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:18:19 -07:00
Nicolas Oliver
bb122bfac4 Dockerfile: add additional build flags and ignore build directory
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 22:17:55 -07:00
Nicolas Oliver
0f8e578c62 Dockerfile: fix java build
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:17:05 -07:00
Nicolas Oliver
dcee721cb3 bacnet/libbacnet.pc: add temp .pc file for libbacnet
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:17:05 -07:00
Nicolas Oliver
b11ec1638e Dockerfile: install optional libraries
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:17:04 -07:00
Nicolas Oliver
fb6ae47b6d docker-compose.yaml: enable examples and paralell make
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:17:03 -07:00
Nicolas Oliver
be718d79af .travis.yml: unify python build and enable examples on every target
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:17:02 -07:00
Nicolas Oliver
87ffc81b65 Dockerfile: add python3 test dependencies
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:17:02 -07:00
Nicolas Oliver
afd9dd07e4 Dockerfile,docker-compose.yaml: run tests for every target
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:17:01 -07:00
Nicolas Oliver
ce9742b355 .travis.yml,docker-compose.yaml: set more specific command to run
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:17:00 -07:00
Nicolas Oliver
c402fbb5e8 .travis.yaml,docker-compose.yaml: add examples building to the matrix
Prevent building examples on every job

Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:16:59 -07:00
Nicolas Oliver
b757ccc617 Dockerfile: add sensor specific dependencies
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:16:59 -07:00
Nicolas Oliver
c5c57b523b .travis.yml: update build matrix and scripts
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:16:58 -07:00
Nicolas Oliver
bb4ce17d44 docker-compose.yaml: add build tasks for java python and node
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:16:57 -07:00
Nicolas Oliver
d4396c2ce3 .dockerignore: add simple ignore rules
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:16:57 -07:00
Nicolas Oliver
780b5df024 Dockerfile: add initial docker image for building
Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-06-12 21:16:56 -07:00
Abhishek Malik
60379fca37 HCSR04: Fixing static analysis issues
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-06-07 16:32:55 -07:00
Abhishek Malik
b90c5a7710 HCSR04: Modifying implementation and adding examples
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-06-07 11:46:12 -07:00
Abhishek Malik
28f964cb48 ULN200XA: Adding Vcc and Vm info to doc 2017-06-02 11:55:44 -07:00
Abhishek Malik
b68eb5f6a6 LSM303DLH: Adding separate i2c contexts
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-06-01 21:46:20 -07:00
Abhishek Malik
50bb4ae1be I2C: Removing multiple address calls
~20 UPM modules have multiple I2C calls in them. As per MRAA API
the I2C address is set in the MRAA I2C context and used from there
for all I2C transactions. Setting the I2C address alone does not
actually result in an I2C transaction. This makes multiple set
address calls pointless. This commit removes these superflous set
address calls from the UPM modules. Setting the address once per
context per device should be enough, unless there are multiple
addresses or multiple devices with different addresses.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-05-31 21:56:12 -07:00
Noel Eck
da18bac925 ims: Updated IMS sensor addressing
The IMS library will now change its I2C address after resetting the HW to a new
address.  It will attempt to close the mraa context and re-init each
time.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-05-31 14:39:07 -07:00
Stefan Andritoiu
2b70bea44f java: Fixed HTU21DSample
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-31 11:43:54 -07:00
Mihai Tudor Panu
c64d04d084 ads1x15: fixed case logic in getThresh() function
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-30 15:14:09 -07:00
Mihai Tudor Panu
8186d093ec htu21d: updated function descriptions in header for clarity
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-30 13:09:01 -07:00
Noel Eck
b2eb392a07 src/CMakeLists.txt: Fix for BINARY_DIR property
Both the .pc and .pom file creation flows rely on the per-target property
BINARY_DIR.  This target property was added in CMake 3.4 so .pc and .pom
file generation was broken for CMake versions < 3.4.  This commit
creates a new per-target property (TARGET_BINARY_DIR) which is set to
${CMAKE_CURRENT_BINARY_DIR} so that it's usable on CMake versions before
3.4.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-05-24 16:22:10 -07:00
Jon Trulson
274fd9b608 lsm6dsl: Initial implementation; C; C++ wraps C; FTI; examples
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-23 16:20:51 -06:00
Jon Trulson
27eec52e29 lsm6ds3h: fix some typos in the register map
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-23 16:20:51 -06:00
Jon Trulson
ee0aaa89eb lsm6ds3h: Initial implementation; C; FTI: C++; C++ wraps C; examples
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-22 16:43:49 -06:00
Jon Trulson
886deabfbb tcs37727: remove utf8 characters
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-22 16:43:49 -06:00
Jon Trulson
e740349355 lis2ds12: Fix up docs, bosch -> stmicro
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-22 16:43:49 -06:00
Noel Eck
34f2799c53 CMakeLists.txt: Hint to libmraa/mraajava
Small change - updated from PATHS to HINTS.  Search HINTS paths first to
provide location for mraa libraries.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-05-19 16:25:08 -07:00
Mihai Tudor Panu
a03d8eb52f readme.cpp.md: updated example name for iotdk api pages
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-19 15:48:09 -07:00
Niti Rohilla
07f3029f10 upm: enable LIDAR-Lite V3 Optical Distance Measurement sensor library
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>
2017-05-19 10:27:53 -07:00
Abhishek Malik
a56b83fa37 VEML6070: Adding back documentation
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-05-18 15:42:07 -07:00
Abhishek Malik
b4bc15201b VEML6070: Adding separate i2c contexts for separate addresses
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-05-18 14:28:29 -07:00
Jon Trulson
c70f378f72 lis2ds12: Initial implementation C; C++; FTI; examples
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-15 14:59:22 -06:00
Mihai Tudor Panu
106b6c7062 upm: v1.3.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-12 11:33:47 -07:00
Mihai Tudor Panu
6c3b161702 knownlimitations.md: describe solution for I2C capacitance issue on Edison
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-11 13:04:23 -07:00
Mihai Tudor Panu
c484056cf0 htu21d: add js and py samples, put sensor on known limitations list
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-11 13:04:21 -07:00
Noel Eck
2931a9c24d carrays_uint32_t.i: Updated path to .i file
Standardized the usage path for carrays_uint32_t.i in bacnetmstp and
e50hx libraries.  Fixes some small mix-ups with java documentation when
looking for carrays_uint32_t.i.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-05-09 14:07:28 -07:00
Jon Trulson
aeefc758ee rn2903: Fix CI issues regarding encoding and enum confusion
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-09 14:41:13 -06:00
Jon Trulson
21a1860ec2 rn2903: Initial implementation; C; C++ wraps C; examples
This requires a new MRAA with UART sendbreak support.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-09 13:44:12 -06:00
Noel Eck
c78da687d4 CMakeLists.txt: Removed force to -march=native
Setting the arch to native for arm.* should not generally be necessary.
If this is absolutely required, it can be passed manually.  Setting
-march=native seems to fail on some versions of gnu gcc for arm.
Removed the force to -march=native in favor of letting cmake set the
arch.

If at some point, this would be required, a better way would be to add
the compile flag after testing if it is supported.

Example:
    upm_add_compile_flags(CXX "-march=native")

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-05-09 11:28:20 -07:00
Abhishek Malik
6c383dbd42 TMP006: Adding very basic support for TMP007
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-05-08 10:30:55 -07:00
g-vidal
7688e5f230 TCA9548A : initial implementation
merged with #413 from maleek

Signed-off-by: g-vidal <gerard.vidal@ens-lyon.fr>
Signed-off-by: Keelan Lightfoot <keelanlightfoot@gmail.com>
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-05-07 16:41:32 -06:00
Noel Eck
1db6bd826a type: Small types in spelling for category
Fixed a few small typos electic -> electric for sensor categories.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-05-05 11:29:26 -07:00
Abhishek Malik
e7ca8cf18b VEML6070: Initial Commit
This commit provides a basic driver for the Vishay VEML6070 UV
Sensor. Some functionality might be missing. Binding examples have
not been tested as of now.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-05-04 11:18:13 -07:00
Mihai Tudor Panu
cdb735c34e cmake: required mraajava version now checks against MRAA_MINIMUM
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-03 16:59:29 -07:00
Mihai Tudor Panu
90e4b5d385 cmake: remove old node include dirs from src/CMakelists.txt
Since they are now set by find_package(Node REQUIRED) when building the Node.js bindings

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-03 16:48:51 -07:00
Mihai Tudor Panu
6a37edcdac cmake: fixed Nodejs detection on Ubuntu systems when using apt installed nodejs packages
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-05-03 14:55:36 -07:00
Noel Eck
563519ae4f unicode: Remove B7 unicode character from examples
The 00B7 unicode character in 4 of the Java examples can cause warnings
(and possible errors) when compiling.  Removed to minimize this risk.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-28 11:39:57 -07:00
sisinty sasmita patra
7b812284c5 Interfaces: minor changes
Signed-off-by: sisinty sasmita patra <sisinty.s.patra@intel.com>
2017-04-25 16:15:54 -07:00
Stefan Andritoiu
0082f54902 java: ignored function that returns output through pointers in C++ (single element arrays in Java), as the same functionality is provided by other methods of the class.
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
2017-04-25 11:57:55 -07:00
Stefan Andritoiu
b32e4911ab java: removed unnecessary method definitions from htu21d and ozw interface file
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
2017-04-25 11:57:54 -07:00
Stefan Andritoiu
fe9254c004 java: Created a general interface that is no longer included in each package and updated examples
Signed-off-by: Bogdan Ichim <bogdan.ichim@rinftech.com>
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
2017-04-25 11:57:54 -07:00
Noel Eck
e3a8b2fc13 pom: Do not generate pom files for blacklist
When generating pom files from CXX targets for JAVA, check against the
JAVA blacklist file.  Remove any targets in the blacklist prior to
generating the pom file.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-24 10:59:07 -07:00
Noel Eck
21ecbd90eb ANDROID: Treat utilities as its own library
Since src/utilities now builds a C/C++ library, other targets which were
using symbols from utilities now need to include the correct target
dependency.  This is mainly for upm_delay* functions.  Added utilities-c
target to all sensor library CMakeLists.txt which require it.

Moved macro for __FILENAME__ from upm_utilities.h to upm_fti.h since
ONLY the FTI headers used this.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-24 10:27:44 -07:00
Noel Eck
0bd68e4e2b ANDROID: CMake/src changes to build on android-24
* Updated pom file generation: Generate pom files after all sensor
      library targets have been created - allows for dependencies
    * Changes for compiling on Android
    * Check for mraa build options: Look at symbols in mraa library to
      determine UPM build options (example: mraa_iio_init, mraa_firmata_init)
    * Add per target summary for C/C++/java/nodejs/python
    * Added hierarchy to fti include directory...
        old: #include "upm_voltage.h"
        new: #include "fti/upm_voltage.h"
    * Removed unimplemented methods from mpu9150 library and java example
    * Add utilities-c target for all c examples.  Most of the C examples
      rely on the upm_delay methods.  Add a dependency on the utilities-c
      target for all c examples.
    * Updated the examples/CMakeLists.txt to add dependencies passed via
      TARGETS to the target name parsed from the example name.  Also updated
      the interface example names to start with 'interfaces'.
    * Updated src/examples/CMakeLists.txt to ALWAYS remove examples from the
      example_src_list (moved this from end of function to beginning).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-24 10:27:35 -07:00
sisinty sasmita patra
b2aa2515b0 upm_version: Added get version functionality for UPM as provided by MRAA
* Renamed version.c to version.hpp
    * Updated CMakelist file
    * Updated upm.i file to support version
    * Updated/modified src Cmakelists to support base upm and wrapper dependency

Signed-off-by: sisinty sasmita patra <sisinty.s.patra@intel.com>
2017-04-20 13:49:13 -07:00
Jon Trulson
5cc4e2120a lsm303d: Initial implementation, C, C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-19 16:44:40 -06:00
Jon Trulson
fe4e97f5dc lsm303agr: fix some comments, move helper macros out of defs.h
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-19 16:44:40 -06:00
Jon Trulson
6e4faefe15 bma250e,bmg160,bmm150: add missing library header documentation to .hpp files
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-18 13:03:02 -06:00
Jon Trulson
460e9de94f groups.md: Add gyroscope (gyro) as a separate category
Previously, gyroscope were lumped in with compasses (magnetometers).
This isn't really proper as a gyroscope measures rotation rates in a
given axis, and has nothing to do with a magnetometer's use case.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-18 13:03:02 -06:00
Jon Trulson
1f5f466691 lsm303agr: Initial implementation, C, FTI, C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-18 12:07:05 -06:00
Jon Trulson
12c59a6aca sample.mapping.txt: update for lsm303->lsm303dlh rename
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-12 12:52:55 -06:00
Jon Trulson
19c58ebba2 lsm303: rename to lsm303dlh
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>
2017-04-12 11:52:50 -06:00
Noel Eck
d9fd1af272 contributions: Updated assignments in template
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>
2017-04-11 17:52:03 -07:00
Mihai Tudor Panu
78eb975435 upm: v1.2.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-04-10 20:38:25 -07:00
Mihai Tudor Panu
a0ea3d5f3d es9257: updated min/max pulse values for C driver
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-04-10 20:38:25 -07:00
Mihai Tudor Panu
f77863dfb5 tcs3414cs: added I2C bus and address parameters to constructor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-04-10 20:38:18 -07:00
Mihai Tudor Panu
7e5f6e9856 max31723: added bus parameter to constructor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-04-10 18:37:08 -07:00
Mihai Tudor Panu
d004aa68b7 lpd8806: added bus parameter to constructor
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-04-10 18:36:05 -07:00
Mihai Tudor Panu
3aef2ea70e docs: updated @param tags, added missing function descriptions, other minor changes
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-04-10 16:59:39 -07:00
Noel Eck
39df7fd10f examples: Handle additional example dependencies
Dependencies added via 'TARGETS' in add_example are 'in addition to' the
dependency provided by the example filename.

    * Small change to examples/CMakeLists.txt to handle additional
      dependencies
    * Prefix 'interfaces-' onto the interfaces examples

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-06 14:16:55 -07:00
Abhishek Malik
b8738b32ca Removing example not required anymore
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-04-06 10:20:47 -07:00
Jon Trulson
cdb697fd7b nrf8001 examples: minor changes to avoid clang build failures
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-05 18:28:36 -06:00
Abhishek Malik
27dc4a5742 Static Analysis fix and Documentation comment changes
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-04-05 16:24:07 -07:00
Noel Eck
e2fe04927f examples: Added ending 'Interesting' tags
A handful of examples were missing the terminating 'Interesting' tag.
Added these.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-05 15:43:02 -07:00
Noel Eck
a655235c70 snippet: Updated all snippet tags
Ensure all src C++ headers which have corresponding C++ examples have
doxygen tags which point to those examples.  Some were missing, some
were invalid, some needed to be updated to match the new example names.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-05 15:16:20 -07:00
Noel Eck
96b219d2fb examples: Added 'Interesting' tag to examples
* Added //! [Interesting] tag to all examples which were missing this
* Removed windows CR/LF
* Removed pointers from examples since these are not needed.  Removed
  try/catch which seems to be there only to handle failing pointers and
  return value from main.
* Reformatted examples when the formatting was wonky/inconstant.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-05 15:16:20 -07:00
Noel Eck
52879b0b04 contributions.md: Updated sensortemplate script
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>
2017-04-05 15:16:20 -07:00
Noel Eck
048f1ac08e examples: C/C++ examples use transitive dependencies
Updated the examples to comprehend transitive dependencies.  This means
that each example target will no longer have a giant list of -I includes
(the examples at the end of the list had includes for all previous
examples, upwards of 200 -I's on the command line).

    * Created a CMakeLists.txt in the upm/examples directory, moved
      common functionality to this level.
    * C/C++ examples now look to the filename for their dependency
      target name, ie; gas-mq2.cxx adds a dependency to the 'gas' target
    * Updated a handful of C/C++ example names to reflect this
    * Example CMake flow - glob the list of files, add targets for any
      special case examples, then att targets for all the rest

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-04-05 15:16:20 -07:00
Jon Trulson
76a12af15f apichanges.md: Add a section on the renames of constants for C ports
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-05 13:16:11 -06:00
Jon Trulson
e6ed49427a README.md: update MMA7660 snippet to reflect current reality
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-04-05 13:16:11 -06:00
Jon Trulson
c57a0d2c30 bmpx8x: rewrite in C; FTI; C++ wraps C
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>
2017-04-05 11:29:08 -06:00
Abhishek Malik
8d43c431f2 ABP: Making driver generic
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-04-04 14:34:11 -07:00
Mihai Tudor Panu
336251740d readme: update example and notice on API changes to grove and i2clcd
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-04-04 13:31:25 -07:00
Abhishek Malik
356f0348ed RSC: Fixing static analysis issues
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-04-03 21:53:36 -07:00
Abhishek Malik
dc7c012c24 RSC: Minor comment changes
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-04-03 14:16:52 -07:00
Abhishek Malik
96eb834e9b RSC: Initial Commit
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-04-03 09:56:54 -07:00
Jon Trulson
b239866e99 bmm150 C example: use correct units in output
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 18:19:25 -06:00
Jon Trulson
6a4f06d51b mcp2515 C examples: add default config for Arduino 101
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 17:34:31 -06:00
Jon Trulson
e765dcf57b bma250e,bmc150,bmg160,bmi055,bmm150,bmx055: C++ examples: use instance rather than allocation
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
a594036778 bma250e: correct some comments/documentation
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
c014ffddcd bmx055: remove bmm150, use new bmm150 library
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
aeaf84ccc6 bmm150: split into new library, C port, FTI, C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
7d789ec208 bma250e: fix up some comments and error messages
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
3d0461b40a bmx055: remove bma250e, use new bma250e library
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
5aed632782 bma250e: split into new library, C port, FTI, C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
3c5a5b87c8 bmg160: use MRAA::Edge for interrupt edge specification
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
22a6c52795 bmg160: fixup some comments, add GPIO to FTI
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
b8fa948f7d src/CMakeLists.txt: always add upm include dirs to includes
Previously, the upm include dir was only added for C targets.  This
breaks when you have a C++ only target that depends on a C++/C driver.
Suddenly, you can't find header files like upm.h, upm_platform.h, etc.

This patch has the UPM include dirs always added for all targets.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
f61b615704 bmx055: remove bmg160, use new bmg160 library
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
8dcd22794b bmg160: C port, FTI, C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Jon Trulson
33f3c882b8 bno055: remove duplicate #defines from header
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-30 16:43:35 -06:00
Noel Eck
5943dad78c rf22: Removed new from examples
Removed new from examples.  Client had new w/o delete.  These
don't need to be pointers.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-29 16:42:45 -07:00
Noel Eck
2f051a202c ldt0028: Removed new for example array
Not necessary in C++.  This was getting flagged as a memory
leak in the examples.  Not a big deal, but can be done differently.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-29 16:42:45 -07:00
Noel Eck
a760f2952a memleak: Free alloc'ed memory for device
Added free for device context.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-29 16:42:45 -07:00
Noel Eck
9549529faf p9813.cxx: Handle buffer overrun
Changed for loop iterator from <= to <.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-29 16:42:45 -07:00
Noel Eck
65969462d1 memleak: i2c init was getting called twice
Removed duplicate call to mraa_i2c_init which was allocating
space for the i2c device twice.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-29 16:42:45 -07:00
Noel Eck
13eea53090 memleak: Free alloc'ed memory for device
Added free for device context.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-29 16:42:45 -07:00
Noel Eck
fa8ab6194d memleak: Handle freeing return from spi call
mraa_spi_write_buf returns an allocated buffer.  Added call to free
the allocated memory.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-29 16:42:45 -07:00
Noel Eck
8048e8734f doxygen: Relative paths in generated docs - update
Reverted changes to CMakeLists.txt, change is done solely in
Doxygen.in.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-28 12:29:11 -07:00
Noel Eck
8262a4203b doxygen: Use relative paths in generated docs
Updated cmake to use strip the full path to the base UPM directory
from generated documentation.  This removes the build server full-
path from UPM documentation.

Old html:

upm: /iotdk/jenkins/workspace/upm-doc-stable/src/moisture/moisture.h File Reference

New html:

upm: src/moisture/moisture.h File Reference

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-28 11:35:11 -07:00
Noel Eck
01f9dd2f41 ims/max30100: Fixed small typo
Changed Initilize -> Initialize.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-20 16:23:37 -07:00
Noel Eck
ccb9fa2a4f doc: Updated spelling occured -> occurred
Fixed small typo.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-20 14:26:50 -07:00
Noel Eck
05435eed4f docs: Small updates to descriptions.
Updated descriptions on four headers.  One header needed a description.
Replaced 'driver' with 'library' on the other three.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-20 10:30:20 -07:00
Jon Trulson
54a84af1c3 light: modify so C++ wraps C code
This also provides some more functionality.  get_raw() has been
deprecated in favor of using getNormalized().

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-17 16:24:15 -06:00
Stefan Andritoiu
27c6ac1d31 java: solved unclean Java bindings for: htu21d, ozw
Signed-off-by: Bogdan Ichim <bogdan.ichim@rinftech.com>
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
2017-03-17 11:44:41 -06:00
Jon Trulson
8779700d82 md: move defines/register defs into separate header for SWIG
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-17 11:41:33 -06:00
Jon Trulson
f9b5d7c52c sht1x: move defines/register defs into separate header for SWIG
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-17 11:41:33 -06:00
Jon Trulson
a10e798682 md: move defines/register defs into separate header for SWIG
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-17 11:41:33 -06:00
Jon Trulson
8cd91624ee mcp2515: remove carrays from java interface file
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-17 11:41:33 -06:00
Jon Trulson
68e42a22d6 ims: move defines/register defs into separate header for SWIG
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-17 11:41:33 -06:00
Jon Trulson
fdef953859 bmi160: move defines/register defs into separate header for SWIG
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-17 11:41:33 -06:00
Jon Trulson
3f334ed1f3 bh1750: move defines/register defs into separate header for SWIG
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-17 11:41:33 -06:00
Mihai Tudor Panu
1a0bdf00cf mmc35240: add mraa dependency to cmakelists
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-17 08:58:48 -07:00
Norbert Wesp
54cd191d43 src/tmp006/tmp006.hpp: fixed encoding error
Signed-off-by: Norbert Wesp <nwesp@phytec.de>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:28:07 -07:00
Norbert Wesp
9fa4dad1ab src/<sensor>/<sensor>.hpp: fixed file_encoding errors
Signed-off-by: Norbert Wesp <nwesp@phytec.de>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:27:35 -07:00
Norbert Wesp
080c121e07 src/<sensor>/CMakeLists.txt: Added mraa dependency in 'upm_module_init'
Like Propanu commented, I changed the dependency of mraa library in each
CMakeLists.txt file of the sensors:
hdc1000 , mag3110 , mma8x5x , tcs37727 , tmp006

Signed-off-by: Norbert Wesp nwesp@phytec.de
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:27:00 -07:00
Norbert Wesp
545e288967 examples/c++/<sensor>.cxx: changed cout / endl to std::cout / std::endl
Signed-off-by: Norbert Wesp <nwesp@phytec.de>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:26:27 -07:00
Norbert Wesp
aecdac255d hdc1000: Added upm support for sensor HDC1000
The HDC1000 is a digital humidity sensor with integrated temperature sensor.

Signed-off-by: Norbert Wesp <nwesp@phytec.de>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:25:56 -07:00
Norbert Wesp
5c837f22cb mag3110: Added upm support for sensor MAG3110
MAG3110 is a three-axis digital magnetometer.

Signed-off-by: Norbert Wesp <nwesp@phytec.de>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:25:20 -07:00
Norbert Wesp
12c81adeba mma8x5x: Added upm support for some MMA8X5X sensors
This commit adds support for following sensors:
MMA8652 , MMA8653, MMA8451 , MMA8452 , MMA8453
These sensors are three-axis accelerometer.

Signed-off-by: Norbert Wesp <nwesp@phytec.de>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:24:41 -07:00
Norbert Wesp
8342b4c079 tmp006: Added upm support for sensor TMP006
TMP006 is a infrared-thermopile sensor.

Signed-off-by: Norbert Wesp <nwesp@phytec.de>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:24:01 -07:00
Norbert Wesp
e83b8ef114 tcs37727: Added upm support for color sensor TCS37727
TCS37727 is a Color Light-To-Digital Converter.
I also added the manufacturer 'ams' of TCS37727.

Signed-off-by: Norbert Wesp <nwesp@phytec.de>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:23:16 -07:00
Lay, Kuan Loon
fabf4287d6 upm: enable MMC35240 3-axis magnetic sensor library and example
MMC35240 is 3-axis magnetic sensor from MEMSIC.

This sensor can measure magnetic fields within the full scale range of
+-24 Gauss (G).

The library provided is libupm-mmc35240.so
The example provided is mmc35240-example-cxx where it will print x,y,z axis
when trigger buffer data is ready. It's also print azimuth value.

This sensor requires calibration. Please shake the sensor in figure 8 pattern,
mmc35240-example will print the calibrated level.

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

The azimuth formula is provided by Han, He <he.han@intel.com>.

Signed-off-by: Lay, Kuan Loon <kuan.loon.lay@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-03-16 17:22:40 -07:00
Jon Trulson
4ea01180a1 lcdks: renamed from sainsmartks, added backlight support
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>
2017-03-16 12:40:10 -06:00
Jon Trulson
ab171573f9 lcd/lcm1602/jhd1313m1: remove lcm1602 and jhd1313m1 from lcd library
The lcm1602 and jhd1313m1 drivers had been rewritten in C with a C++
wrapper some time ago, however the original lcm and jhd drivers were
still present in the lcd library.  In addition, to avoid header file
conflicts, the new, separated lcm and jhd header files were renamed
with a .hxx prefix.

This patch:

- renames the new lcm1602/ and jhd1313m1/ header files to have the
  usual .hpp prefix.

- removes the lcm1602, jhd1313m1, and sainsmartks drivers from the
  lcd/ (i2clcd) library.

- fixes the examples to use the "new" libraries (lcm1602 and
  jhd1313m1)

- changes the argument type for the createChar() (C++) to use a byte
  vector (std::vector<uint8_t>) rather than a typedef'd char array.
  The lcm1602_create_char() function (C) uses a standard char *.  The
  use of std::vector is well supported by SWIG.

- SWIG interface files changed to use upm_vectortypes.i, and removes
  the carrays helpers, which should no longer be needed for these
  drivers.

- removes the inclusion of the driver C .h header files into the SWIG
  interface files - this should not be needed for these drivers.

- the sainsmartks driver will be placed into it's own new lcdks (LCD
  Keypad Shield) library.  This library should support the
  SainsmartKS, DFRobot LCD Keypad Shield, and similar products from
  other manufacturers in a future commit.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-16 12:39:52 -06:00
Abhishek Malik
d965b92af1 ABPDRRT005PG2A5: Initial Commit
This commit enables the ABP Honeywell sensor. Java examples is
yet to be tested and has not been provided with the current commit
and will be provided in a future commit.

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-03-13 11:13:10 -07:00
Jon Trulson
cc0174910b ds18b20: fix delay timing error in ds18b20_update()
Due to the change of using upm_delay_ms() instead of usleep(), but
failing to adjust the delay time accordingly, ds18b20_update() was
waiting for 750000ms (12 minutes) before reading the result of a
measurement, instead of the more appropriate 750ms.

This should fix Issue #530.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-13 12:05:22 -06:00
Jon Trulson
c4a506f5a3 bmp280/bme280: C port, C++ wraps C
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>
2017-03-10 17:00:50 -07:00
Noel Eck
58cdfadf4e p9813: Chainable LEDS
Initial commit of the p9813 chainable LED controller.
Added C, C++, python, java, and node examples.

Signed-off-by: Sergey Kiselev <sergey.kiselev@intel.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-08 09:46:43 -08:00
Noel Eck
b3a5275183 t6713: Static analysis fixes
Updated t6713 to use class instances vs class pointers.  Creating these
on the stack clears up some memory leaks where items created in the
heap are not deleted for a handful of the throw conditions.  Removed
all news/deletes.

Also reformatted to remove tabs and some spaces.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-07 22:10:16 -08:00
Jon Trulson
b314f56c00 l298: fix a potential divied-by-zero
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-07 14:24:04 -07:00
Jon Trulson
d4b536b593 bno055: C port; C++ wraps C
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>
2017-03-07 13:16:24 -07:00
Jon Trulson
2bdde21a2f src/upm_vectortypes.i: SWIG interface file for vector types
This interface file can be used to support some standard vector types
in our SWIG interface code.  The current vector types supported are:

%template(intVector)    vector<int>;
%template(int16Vector)  vector<int16_t>;
%template(floatVector)  vector<float>;
%template(doubleVector) vector<double>;
%template(byteVector)   vector<uint8_t>;

Using these makes it much easier and more "natural" for use with the
SWIG languages rather than the currently used mechanism of array
pointers and certain other pointer-based methods.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-07 13:16:14 -07:00
Jon Trulson
6ceebc9a17 ppd42ns_data.h: replace tabs with spaces
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-03-07 13:16:08 -07:00
Noel Eck
65fc70a31a rf22: Static analysis fixes
A few small fixes for the rf22 to satisfy klocwork.

    * Converted malloc's to new's to be more C++'ish and since
      malloc return were not checked.
    * Initialize data, buf, and _lastInterruptFlags
    * Up'ed RF22_MAX_MESSAGE_LEN to 64.
        Reason:

void RF22::sendNextFragment()
{
    if (_txBufSentIndex < _bufLen)
    {
    // Some left to send?
    uint8_t len = _bufLen - _txBufSentIndex;
    // But dont send too much
    if (len > (RF22_FIFO_SIZE - RF22_TXFFAEM_THRESHOLD - 1))
        len = (RF22_FIFO_SIZE - RF22_TXFFAEM_THRESHOLD - 1);
    spiBurstWrite(RF22_REG_7F_FIFO_ACCESS, _buf + _txBufSentIndex, len);
    _txBufSentIndex += len;
    }
}

        RF22_FIFO_SIZE = 64
        RF22_TXFFAEM_THRESHOLD = 4
        RF22_MAX_MESSAGE_LEN = 50
        _buf[RF22_MAX_MESSAGE_LEN]
        Length of _buf *was* 50, so if the 'But dont send too much' above
        was to happen, the length is set to 63, which overruns
        _buf[RF22_MAX_MESSAGE_LEN]

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-06 12:13:27 -08:00
Noel Eck
51a181a14f java_interfaces: Moved ifdefs for swig version
Moved the SWIG version check from each sensor library .i file to
the base SWIG .i file (per interface).  This cleans up the number
of #if SWIG_VERSION's across the code base, and will make cleanup
of these easier at a later date.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-03 10:27:12 -08:00
Noel Eck
cfb4105dd8 docs: Added space to swig interface include
Documentation script was failing when parsing swig file.  Added
a space in the ads1x15 java swig file to make the doc parser happy.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-03-03 10:11:25 -08:00
Noel Eck
b7faba556f sensortemplate: Added a template sensor
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>
2017-03-02 23:05:51 -08:00
Stefan Andritoiu
95801b395d Corrected typo in led.hpp. File includes led.h, not led.hpp
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
2017-03-02 20:19:24 -08:00
sisinty sasmita patra
1f18369fbe SWIG_JAVA: C++ Interfaces to Java interfaces, Modified one Java Example
This commit translates C++ interfaces to Java interfaces, previously C++ Interfaces implemented java classes.

    * Added java swig interface files for all C++ interfaces to simplify swig
    javaupm_iADC.i
    javaupm_iCO2Sensor.i
    javaupm_iHumiditySensor.i
    javaupm_iLightController.i
    javaupm_iLightSensor.i
    javaupm_iModuleStatus.i
    javaupm_interfaces.i
    javaupm_iPressureSensor.i
    javaupm_iTemperatureSensor.i

    <example Usage>
        %include"../interfaces/javaupm_iADC.i"

    * Modified swig interface files for few sensors that implements interfaces
    ads1x15
    bmp280
    bmpx8x
    ds1808lc
    hlg150h
    lp8860
    max44009
    ms5611
    si1132
    si7005
    t6713

    * Removed few methods that were mentioned Protected and made them public, so that menthods can be overridden

    * Made IModuleStatus virtual to avoid ambiguity in multiple inheritance
    For example
    class A {};
    class B : public A {};
    class C : public A {};
    class D : public B, public C {};

    This can be solved as
    class A {};
    class B : virtual public A {};
    class C : virtual public A {};
    class D : public B, public C {};

    * Modified java interface files to support multiple swig versions

    * Modified javaupm interface file to support standard auto load library code

    * Fixed autoloadlibrary tests for interfaces

    * Created one interface example separately <BME280_InterfaceExample.java>,
    <example Usage>
        BME280_InterfaceExample.java
    since we cann't define swig versions inside java example file.
    So, instaed added swig versions in Cmake.
    <example Usage>
         if (SWIG_VERSION VERSION_GREATER 3.0.8)
           add_example_with_path(BME280_InterfaceExample bmp280 bmp280)
         endif()

Signed-off-by: sisinty sasmita patra <sisinty.s.patra@intel.com>
2017-03-02 20:14:03 -08:00
Noel Eck
f8663c90f3 ctest: Fix for autoloadlibrary ctest
Update to fix a python indentation error.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-23 11:14:44 -08:00
Noel Eck
1d6d660769 max30100: Small typo fix
Changed initializate->initialization...

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-17 16:49:39 -08:00
Noel Eck
b57710cd78 groups.md: Removed redundant group maxbotix
Removed redundant group and renamed Maxbotixs to MaxBotix.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-17 16:40:09 -08:00
Noel Eck
6d41566e93 doc: Changed <B5> to u for python doc run
The µ character (<B5>) fails the python documentation run.
Replacing with 'u'.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-14 08:31:55 -08:00
Abhishek Malik
7a60cd5abe AQI: Adding ugm3 calculation to ppd42ns and aqi calculation to upm_utilities
Contributions by: Rex Tsai <rex.cc.tsai@gmail.com>

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
2017-02-13 23:04:20 -08:00
Mihai Tudor Panu
b9988469ba upm: v1.1.0
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-13 16:11:37 -08:00
Mihai Tudor Panu
4fff3a500d apichanges: list i2clcd library and individual display modules being split
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-13 16:09:44 -08:00
Mihai Tudor Panu
a53ab5cb80 docs: updated sections on porting and documentation authoring
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-09 16:50:00 -08:00
Mihai Tudor Panu
bd8104f6ee tests: exclude build dir and update expected number of duplicates
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-09 16:49:27 -08:00
Mihai Tudor Panu
dbac88d225 ads1x15: extend examples for both ads1015 and ads1115 and clarify which one is used where
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-09 15:11:59 -08:00
Mihai Tudor Panu
70bcdfefa4 lcm1602/jhd1313m1: temporarily rename headers to avoid duplicates
This should be reverted when these 2 classes are removed from the i2clcd library. Will also require updating all the examples to load the new modules instead.

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-09 15:06:12 -08:00
Noel Eck
762c28f000 docs: Changed magnometer to magnetometer
Replaced all occurances.  While there are a few references
to magnometer out there, magnetometer is used much more broadly.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-08 13:56:28 -08:00
Noel Eck
283fce619e doc: Scrubbed ALL sensor library descriptions
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>
2017-02-08 11:50:00 -08:00
Noel Eck
7a5c8a6cb3 swigjava: Added SWIGJAVA define to java module build
SWIGJAVA is defined for the swig interface file processing but is not
defined for the sensor library source build.  There are multiple sensors
that appear to rely solely on SWIGJAVA - these are not building
correctly.  Adding SWIGJAVA define for the java module src build.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-07 15:37:46 -08:00
Mihai Tudor Panu
4342b880b9 st7735: add typemaps to uint8_t arrays for js and python
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-06 21:28:04 -08:00
Mihai Tudor Panu
ddddbd024d tests: temporarily allow duplicate headers until cleanup
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-06 21:28:01 -08:00
Mihai Tudor Panu
67e0ceb48d tests: add test for duplicate headers
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-06 19:30:02 -08:00
Mihai Tudor Panu
2298846fef install.md: added install instructions for different OSes
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-02-06 19:02:35 -08:00
Noel Eck
567476b89a cmake: Explicit dependency for mraa and interfaces
A handful of modules do not require mraa.  Captured this in
    src/CMakeLists.txt - only add mraa dependency for targets which
    use:

        upm_module_init(mraa ... )
            or
        upm_mixed_module_init(... REQUIRES mraa)

    All sensors which use UPM interfaces (src/interfaces) now
    explicitly add the interfaces target:

        upm_module_init(interfaces ... )
            or
        upm_mixed_module_init(... REQUIRES interfaces)

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-06 16:52:27 -08:00
Noel Eck
d345006c03 cmake: Dependency refactoring for includes and libs
This commit attempts to use a more cmake-friendly approach when
handling inter-target dependencies.  A combination of macros and
include_directories usage provided overzealous compile -I/blah
entries which equates to large catch-all build commands.  For
example, the last CXX target contains include directories for nearly
all preceeding targets (~190).  Library dependencies were also often
wrong or missing.

    * Removed nearly all used of include_directories (swig cmake
      commands still appear to need these for generating the swig
      command line)
    * Updated usage of target_link_libraries in upm_module_init,
      also changed to using target_include_directories per target.
      This greatly simplifies upm/mixed_module_init usage for libraries
      which depend on other libraries (in this project).

        example (src/tb7300/CMakeLists.txt)
            old:
                 # upm-libbacnetmstp will bring in libbacnet, I hope
                 set (reqlibname "upm-bacnetmstp")
                 include_directories(${BACNET_INCLUDE_DIRS})
                 include_directories("../bacnetmstp")
                 upm_module_init()
                 upm_target_link_libraries(${libname} bacnetmstp)
            new:
                 upm_module_init(bacnetmstp)

      The reason here, is that tb7300 depends on bacnetmstp, which
      depends on BACNET includes/libs, so tb7300 gets the headers and
      libraries transitively via its dependency on bacnetmstp.
    * Updated pkg-config .pc file generation flow to reflect changes
      with dependencies.
    * Create a real target for the interfaces (CXX abstract sensor
      classes).  Renamed the directory from 'upm/src/upm' to
      'upm/src/interfaces'  Also changed the install location of the
      interface headers to include/upm/interfaces.  Updated interface
      header usage to reflect this.
    * Updated a few sensor libs to use fwd declarations for mraa.
      Ideally the UPM libs would do more of this which eases the
      burden on anyone building on top of the sensor libraries since
      they would not need to know about mraa headers.
    * Fixed examples which use symbols not defined in local includes

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-06 10:23:28 -08:00
Noel Eck
7f0e03b0e3 cmake: Convert module_init to function
This is a housekeeping commit to move the upm_module_init
macro to a function.  The scope resolution of the function
call adds a bit more protection for the variables used inside
this macro/function.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-05 21:30:20 -08:00
Jon Trulson
08a46ee8e6 grovecollision,groveeldriver,groveelectromagnet,waterlevel: remove unnecessary librt dependency
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-02-02 14:36:51 -07:00
Jon Trulson
fb88fda5cb upm_utilities: Add a _POSIX_C_SOURCE define if needed
In certain systems, where -std=c11 is used, certain posix extensions
are disabled unless specifically enabled.  On these systems, this
could cause usleep() and/or nanosleep() to fail with an implicit
declaration warning.  This patch ensures that at least POSIX 200809 is
used, if otherwise undefined.

This should fix Issue #513.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-02-02 13:58:41 -07:00
Jon Trulson
90d856d128 utilities: use nanosleep() instead of usleep() for upm_delay*() functions
usleep() has been deprecated, and can cause compile problems on never
glibc versions (debian jesse).  We now use nanosleep() on linux
systems to implement delays.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-02-02 12:32:04 -07:00
Jon Trulson
d2e0327c30 src/CMakLists.txt: re-disable other warnings for SWIG building
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-02-02 12:31:57 -07:00
Jon Trulson
2e97aa9979 speaker: fix some incorrect comments/documentation
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-02-01 17:59:15 -07:00
Noel Eck
cdb75e8c13 swig_java: Fix for #518 - java wrapper implementations
This commit fixes #518 by adding source back into the CXX swig-
generated wrapper.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-02-01 16:15:30 -08:00
Jon Trulson
dac31a0347 speaker: Add pwm functionality and 5 new examples to demonstrate
These changes add the ability to intialize a speaker instance to use a
PWM pin instead of a standard GPIO pin in order to emit sounds.

The current GPIO functionality is fairly constrained by the
implementation -- it only permits playing cerain hardcoded "notes".

The PWM support allows one to emit specific frequencies (currently
between 50-32Khz) using a PWM pin.  Of course, you may still be
constrained by the limits of your PWM hardware in the end.

There are a few new functions provided to support this PWM mode.  To
use the PWM mode of speaker, use the speaker_init_pwm() initialization
routine instead of speaker_init() (for C). For C++ and the SWIG
languages, pass "true" as the second argument to the constructor to
enable PWM mode.  The default is "false", to match current default
behavior (GPIO).

Functions that are not related to a given mode (GPIO vs. PWM) will do
nothing if not usable in that mode.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-02-01 17:08:05 -07:00
Jon Trulson
0749f130e1 nunchuck: C port; FTI; C++ wraps C
Some API changes were made as well, see docs/apichanges.md.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-31 13:08:20 -07:00
Jon Trulson
1bbb9386b7 enc03r: C port; FTI; C++ wraps C
The API for this driver has changed.  See docs/apichanges.md.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-30 12:06:32 -07:00
Noel Eck
f914159e21 ims: Small logging change for C init method
Added a bit more description if the library cannot set I2C
standard mode.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-01-27 11:16:24 -08:00
Jon Trulson
849711c47d wfs: C port; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-26 15:13:01 -07:00
Jon Trulson
0a91eb0b46 hmc5883l: C port; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-25 17:42:38 -07:00
Jon Trulson
806b00c2b7 uartat: add missing uartat_defs.h to SWIG interface files
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-24 17:31:57 -07:00
Jon Trulson
e8151640a1 uartat, le910: initial implementation.
uartat is the underlying UART driver, specifically for use with
AT-style command driven devices like modems.

The le910 support is provided in the form of examples that make use
of the uartat driver to interact with the device.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-24 14:02:03 -07:00
Jon Trulson
123e611f45 cjq4435: C port, C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-20 12:02:30 -07:00
Jon Trulson
8d5278b9d4 CMakeLists.txt: Bump minimum MRAA version to 1.4.0
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-19 16:26:48 -07:00
Jon Trulson
ab96e8f3a3 speaker: C port, C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-19 13:54:47 -07:00
Jon Trulson
d3b864362d ds18b20: rewrite C++ to wrap C, add FTI, update examples
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>
2017-01-18 13:33:44 -07:00
Noel Eck
6769d976a0 max30100: ISR recover attempt
Handle failure in ISR routine - attempt to read status and
FIFO registers and continue sampleing (vs exiting and turning
off continuous sampling).

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-01-11 15:52:41 -08:00
Noel Eck
bd47b9ed45 max30100: Initial commit - MAX30100 pulse oximeter
* c/c++ source
    * java/js/python/c/c++ examples
    * Doc image (png)
    * Tested on Intel Edison
    * TODO: Tuning for SpO2 reading

Signed-off-by: Noel Eck <noel.eck@intel.com>
2017-01-10 11:29:30 -08:00
Jon Trulson
6ea65a16a4 upm_platform: use __linux__ define to detect linux platforms
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2017-01-10 10:51:13 -07:00
Mihai Tudor Panu
0849fbc674 ads1x15: added elaborate examples for TI ADS1015 ADC
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2017-01-05 21:20:58 -08:00
Noel Eck
e25be536a1 ims: Small typo fix
Changed ISM to IMS.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-12-20 23:25:26 -08:00
Jon Trulson
a70629e3b2 mcp2515: fix return from rx_status_filtermatch; Travis CI (clang)
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-20 13:01:04 -07:00
Jon Trulson
fed0478dc9 mcp2515: fix conversion error reported by Travis CI (clang)
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-20 12:47:43 -07:00
Jon Trulson
fcb4d9d36d mcp2515: Initial implementation; C; C++
The mcp2515 is a CAN bus controller.  It was developed using the Seeed
CAN bus shield.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-20 12:17:14 -07:00
Jon Trulson
5eb8af6d70 upm.i: treat upm_result_t like an int in SWIG
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-20 12:17:09 -07:00
Brendan Le Foll
3c93eba4af LICENSE: Update license to be clearer and add 2016 copyright
MIT licenses should start with the following line to identify it as an MIT
license.

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
2016-12-15 17:50:59 -08:00
Mihai Tudor Panu
78953b110f npm: small improvement in logic for handling C sources
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-12-15 16:44:36 -08:00
Mihai Tudor Panu
53124e9704 npm: rename c sources to avoid node-gyp makefile target collision
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-12-13 17:14:21 -08:00
Mihai Tudor Panu
cde747439f upm: v1.0.2
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-12-08 15:47:13 -08:00
Mihai Tudor Panu
dfc7a710d4 firmata: extended data types on pins to allow subplatform usage
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-12-08 15:10:36 -08:00
Mihai Tudor Panu
130cb822e4 rf22: Initial implementation for RFM22B radios, C++ only & bindings
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-12-07 14:38:56 -08:00
Mihai Tudor Panu
c057fa6708 travis.yml: use different swig ppa for Travis CI builds
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
2016-12-06 19:33:00 -08:00
Jon Trulson
c6ad8cb5ee utilities: use a better method for detecting zephyr kernel version
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-05 15:04:34 -07:00
Jon Trulson
024b43dfa3 utilities: fix new Zephyr k_timer based implementation
- Fixed the Zephyr kernel version checks to check for 0.1.6 rather
  than 1.6.0.
- fixed the k_timer implementation to actually work.  None of these
  were being called correctly.
- due to the fact that the k_timer API only has a 1ms resolution,
  re-implement upm_delay_us() (on 0.1.6 version of zephyr) as a busy
  loop using a upm_clock_t.

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-05 13:41:19 -07:00
Jon Trulson
6667646d32 mb704x: Initial implementation; C; FTI; C++ wraps C
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-02 16:44:43 -07:00
Jon Trulson
e1e9067744 groups.md: Add MaxBotix manufacturer
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-02 16:44:43 -07:00
Jon Trulson
c4656bf8ba utilities: add Zephyr 1.6 k_timer support (pulled from zupm)
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-12-02 16:44:43 -07:00
Noel Eck
232089f400 cmake: Check for JAVA in top-level CMakeLists.txt
Moved require for Java/JNI/mraajava to top-level CMakeLists.txt
which will fail early if these are NOT found (vs failing in
the src-level CMakeLists.txt

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-29 15:14:32 -08:00
Noel Eck
09144e712b cmake: Consolidated BUILDJAVAEXAMPLES and BUILDEXAMPLES
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>
2016-11-29 12:25:25 -08:00
Noel Eck
2d94c2ed90 travis-ci: Turn on FTI source compiling in travis-ci
* Build FTI source w/travis

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-29 11:49:52 -08:00
Jon Trulson
91652a2da5 button: fix so that button intr C example is built
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-29 12:02:26 -07:00
Noel Eck
929244b27a ims: Fixed IMS java example
* Fixed a compile issue for the JAVA example
    * Added C header to swig java/js interface files

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-29 09:56:57 -08:00
Noel Eck
9a4f0cae0c ims: Added FTI and java example
* Added compiling FTI for IMS
    * Updated JAVA example, added to CMakeLists.txt

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-29 08:51:45 -08:00
Jon Trulson
402de082d3 ecezo: make sure to mraa_init() in ecezo_uart_init()
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-28 18:23:18 -07:00
Jon Trulson
ad275e1d41 ecezo: initial implementation; C, C++; FTI + examples
Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-11-28 17:45:23 -07:00
Noel Eck
d4559878df cmake: Removed -dirty from VERSION if git_describe fails
* Removed -dirty
    * Also removed redundant set(PACK_PACKAGE_VERSION ...
      since the first gets overwritten by the second

Signed-off-by: Noel Eck <noel.eck@intel.com>
2016-11-22 15:03:14 -08:00
Noel Eck
971cb4ab51 ims: Initial turnin of I2C Moisture Sensor
* Added C library
    * Added CXX library
    * Added C/CXX/java/js/python examples

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

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

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

This commit fixes #485

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Before (w/cmake < 3):

    build/src/dfrph/pyupm_dfrphPYTHON_wrap.cxx

After:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    * Added C source.

    * Tested C sensor code on edison

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

    * Added C example for vdiv.

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

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

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

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

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

Fixes linking problem with C libraries.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-08-09 16:03:42 -06:00
3393 changed files with 192980 additions and 76555 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
Dockerfile
docker-compose.yaml
build

5
.gitignore vendored
View File

@ -1,4 +1,4 @@
build/
build*/
# Object files
*.o
@ -11,3 +11,6 @@ build/
# Temp files
*.swp
*~
# Node modules
**/node_modules

6
.gitmodules vendored Normal file
View File

@ -0,0 +1,6 @@
[submodule "doxy/doxygen2jsdoc"]
path = doxy/doxygen2jsdoc
url = https://github.com/intel-iot-devkit/doxygen2jsdoc
[submodule "doxy/doxyport"]
path = doxy/doxyport
url = https://github.com/intel-iot-devkit/doxyport

View File

@ -1,46 +1,91 @@
dist: trusty
sudo: required
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
install:
- sudo add-apt-repository --yes ppa:fenics-packages/fenics-dev/swig
- sudo apt-get update -qq
- sudo apt-get install -y --force-yes -qq swig3.0 git
- sudo ln -s /usr/bin/swig3.0 /usr/bin/swig
- sudo update-java-alternatives -s java-8-oracle
before_script:
# 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:
- 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:
- ubuntu-toolchain-r-test
- george-edison55-precise-backports
packages:
- cmake
- cmake-data
- g++-4.8
services:
- docker
before_install:
- sudo wget -q https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` -O /usr/local/bin/docker-compose
jobs:
fast_finish: true
allow_failures:
- env: TARGET=android
include:
- &run-with-clang-minimal
stage: Clang 3.8 - minimal with unit tests
env:
- TARGET=minimal
- CMAKE_BUILD_TYPE=Debug
before_script: docker-compose pull ${TARGET}
script:
- export CC=clang-3.8 CXX=clang++-3.8
- docker-compose run ${TARGET}
- <<: *run-with-clang-minimal
env:
- TARGET=minimal
- CMAKE_BUILD_TYPE=Release
- &run-with-clang
stage: Clang 3.8
env: TARGET=python
before_script: docker-compose pull ${TARGET}
script:
- export CC=clang-3.8 CXX=clang++-3.8
- docker-compose run ${TARGET}
- <<: *run-with-clang
env: TARGET=node4
- <<: *run-with-clang
env: TARGET=node5
- <<: *run-with-clang
env: TARGET=node6
- <<: *run-with-clang
env: TARGET=java
- &run-with-gcc-5
stage: Gcc 5
env: TARGET=python
before_script: docker-compose pull ${TARGET}
script:
- export CC=gcc-5 CXX=g++-5
- docker-compose run ${TARGET}
- <<: *run-with-gcc-5
env: TARGET=node4
- <<: *run-with-gcc-5
env: TARGET=node5
- <<: *run-with-gcc-5
env: TARGET=node6
- <<: *run-with-gcc-5
env: TARGET=java
- &run-with-gcc-6
stage: Gcc 6
env: TARGET=python
before_script: docker-compose pull ${TARGET}
script:
- export CC=gcc-6 CXX=g++-6
- docker-compose run ${TARGET}
- <<: *run-with-gcc-6
env: TARGET=node4
- <<: *run-with-gcc-6
env: TARGET=node5
- <<: *run-with-gcc-6
env: TARGET=node6
- <<: *run-with-gcc-6
env: TARGET=java
- &run-additional-jobs
stage: Additional Jobs
env: TARGET=doc
before_script: docker-compose pull ${TARGET}
script:
- export CC=clang-3.8 CXX=clang++-3.8
- docker-compose run ${TARGET}
- <<: *run-additional-jobs
env: TARGET=android
- <<: *run-additional-jobs
env: TARGET=cordova
- <<: *run-additional-jobs
env: TARGET=examples
- <<: *run-additional-jobs
env: TARGET=sonar-scan
- <<: *run-additional-jobs
env: TARGET=npm

View File

@ -1,20 +1,230 @@
cmake_minimum_required (VERSION 2.8.11)
project (upm)
# Before going any further, define build options
option (BUILDDOC "Build all doc" OFF)
option (BUILDCPP "Build CPP sensor libraries" ON)
option (BUILDFTI "Build Funtion Table Interface (FTI) in C sensor libraries" OFF)
option (BUILDSWIGPYTHON "Build swig python modules" ON)
option (BUILDSWIGNODE "Build swig node modules" ON)
option (BUILDSWIGJAVA "Build swig java modules" OFF)
option (BUILDCORDOVA "Build cordova bindings" OFF)
option (BUILDEXAMPLES "Build C/C++/JAVA examples" OFF)
option (NPM "Generate NPM/GYP tarballs" OFF)
option (BUILDTESTS "Generate check-ups for upm" OFF)
option (WERROR "Make all warnings into errors." ON)
# Warn if building in source root
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message("WARNING: building into sources dir can be risky, prefer other directory")
message (WARNING "Building into sources dir can be risky, prefer other directory")
endif ()
# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
# Check if provided compiler supports target flag
# usage:
# compiler_flag_supported(C/CXX is_supported flag)
#
# The result of output_variable is set to the sanitized flag name if supported
# or cleared if the flag is not supported.
function (compiler_flag_supported compiler output_variable flag)
# Currently only C and CXX compile flags, clear and return if not supported
if (NOT ${compiler} MATCHES "C|CXX")
message (WARNING "Unknown compiler: ${compiler}")
set ("${output_variable}" "" PARENT_SCOPE)
return ()
endif (NOT ${compiler} MATCHES "C|CXX")
string (REPLACE "-" "_" SANITIZED_FLAG_NAME "${flag}")
string (REPLACE "/" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
string (REPLACE "=" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
string (REPLACE " " "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
# Disable messages from CHECK_C/XX_COMPILER_FLAGS macros
set (CMAKE_REQUIRED_QUIET_SAVED ${CMAKE_REQUIRED_QUIET})
set (CMAKE_REQUIRED_QUIET ON)
# C or CXX?
if (${compiler} STREQUAL C)
CHECK_C_COMPILER_FLAG("${flag}" HAS_${SANITIZED_FLAG_NAME})
elseif (${compiler} STREQUAL CXX)
CHECK_CXX_COMPILER_FLAG("${flag}" HAS_${SANITIZED_FLAG_NAME})
endif ()
# Restore previous CMAKE_REQUIRED_QUIET state
set (CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVED})
# Does the compiler support this flag?
if (HAS_${SANITIZED_FLAG_NAME})
set ("${output_variable}" "${SANITIZED_FLAG_NAME}" PARENT_SCOPE)
else ()
set ("${output_variable}" "" PARENT_SCOPE)
endif()
endfunction ()
include (CheckCCompilerFlag)
include (CheckCXXCompilerFlag)
# Add scoped compile flag/s using add_compile_options.
# This function checks to see if each flag is supported
# by the compiler before setting the compile option.
function (upm_add_compile_flags compiler)
set (_TMP_COMPILER_FLAGS "")
# Iterate the flags, check if supported
foreach (flag ${ARGN})
# Check if this compile flag is supported
compiler_flag_supported(${compiler} is_supported ${flag})
# Add if supported, warn and skip if not supported
if (is_supported)
set (_TMP_COMPILER_FLAGS "${_TMP_COMPILER_FLAGS} ${flag}")
else ()
message (WARNING "${compiler} compiler does not support flag \"${flag}\"")
endif ()
endforeach (flag ${ARGN})
# Set the variable in the parent scope
set (CMAKE_${compiler}_FLAGS "${CMAKE_${compiler}_FLAGS} ${_TMP_COMPILER_FLAGS}" PARENT_SCOPE)
endfunction ()
# Compiler flags common to both C and CXX
# Enable -Wall
set (C_CXX_WARNING_FLAGS -Wall
-Wno-strict-aliasing
-Wno-deprecated-declarations # Temp fix for MRAA deprecated methods
)
# GCC-6 added -Wmisleading-indentation to -Wall, skip these for now
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "6")
list (APPEND C_CXX_WARNING_FLAGS -Wno-misleading-indentation)
endif ()
# Warnings as errors?
if (WERROR)
list (APPEND C_CXX_WARNING_FLAGS -Werror)
message (STATUS "Warnings as errors enabled (-Werror), disable with -DWERROR=off")
endif (WERROR)
# Set C compiler warning flags at top-level scope and emit a warning about
# unsupported flags
upm_add_compile_flags(C ${C_CXX_WARNING_FLAGS}
-Winit-self
-Wimplicit
-Wsign-compare
-Wmissing-parameter-type)
# Set CXX compiler warning flags at top-level scope and emit a warning about
# unsupported flags
upm_add_compile_flags(CXX ${C_CXX_WARNING_FLAGS}
-Wnon-virtual-dtor
-Woverloaded-virtual
-Wsign-compare
-Wreorder)
# Allow exception error handling for Android C++
if (ANDROID)
upm_add_compile_flags(CXX -fexceptions)
endif (ANDROID)
find_package (Threads REQUIRED)
find_package (PkgConfig REQUIRED)
# Force a libmraa search and minimum required version every time a config is generated
unset(MRAA_FOUND CACHE)
pkg_check_modules (MRAA REQUIRED mraa>=1.1.1)
message (INFO " found mraa version: ${MRAA_VERSION}")
set(MRAA_MINIMUM 2.0.0)
pkg_check_modules (MRAA REQUIRED mraa>=${MRAA_MINIMUM})
# Also, get full path to the mraa library
find_library(MRAA_LIBRARY NAMES mraa HINTS ${MRAA_LIBDIR})
# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
# Test MRAA for various compile options
include (CheckLibraryExists)
check_library_exists (${MRAA_LIBRARIES} mraa_iio_init "${MRAA_LIBDIR}" MRAA_IIO_FOUND)
check_library_exists (${MRAA_LIBRARIES} mraa_firmata_init "${MRAA_LIBDIR}" MRAA_FIRMATA_FOUND)
check_library_exists (${MRAA_LIBRARIES} mraa_uart_ow_init "${MRAA_LIBDIR}" MRAA_OW_FOUND)
# Check for BACNET
pkg_check_modules (BACNET libbacnet)
# Check for MODBUS
pkg_check_modules (MODBUS libmodbus>=3.1.2)
# Check for OPENZWAVE
pkg_check_modules (OPENZWAVE libopenzwave)
# Check for TinyB
pkg_check_modules (TINYB tinyb>=0.5.1)
# And get full path to the tinyb library
find_library(TINYB_LIBRARY NAMES tinyb HINTS ${TINYB_LIBDIR})
# Find JPEG
find_package (JPEG)
# Find nodejs
if (BUILDSWIGNODE)
find_package (Node REQUIRED)
if (BUILDTESTS)
find_package (Npm REQUIRED)
endif (BUILDTESTS)
endif (BUILDSWIGNODE)
# Find JAVA/JNI
if (BUILDSWIGJAVA)
find_package (Java REQUIRED)
find_package (JNI REQUIRED)
pkg_check_modules (MRAAJAVA REQUIRED mraajava>=${MRAA_MINIMUM})
# Also, get full path to the mraajava library
find_library(MRAAJAVA_LIBRARY NAMES mraajava HINTS ${MRAA_LIBDIR})
endif (BUILDSWIGJAVA)
# Cordova binding
if (BUILDCORDOVA)
if (NOT BUILDSWIGJAVA)
message(FATAL_ERROR "Cordova bindings require JAVA packages, please enable BUILDSWIGJAVA (-DBUILDSWIGJAVA=on).")
endif()
find_package (Node REQUIRED)
find_package (Npm REQUIRED)
find_package (UpmCordovaGenerator 0.2.1 REQUIRED)
endif (BUILDCORDOVA)
# Find swig if any wrapper is enabled
if (BUILDSWIGPYTHON OR BUILDSWIGNODE OR BUILDSWIGJAVA)
find_package (SWIG 3.0.5 REQUIRED)
include (${SWIG_USE_FILE})
endif ()
# Python is required for swig generated python and for UPM tests.
# The UPM build can generated modules for both python2 AND python3
# with the corresponding PYTHONLIBS. Currently, BUILDTESTS has a
# hard dependency on the PYTHON2INTERP.
# OpenCV python detect will attempt to find python2/3
if (BUILDSWIGPYTHON OR BUILDTESTS)
include (cmake/modules/OpenCVDetectPython.cmake)
# Fail if building tests but no python interpreter was found
if (BUILDTESTS AND NOT PYTHON2INTERP_FOUND)
message(FATAL_ERROR "BUILDTESTS=ON requires the python2 interpreter")
endif (BUILDTESTS AND NOT PYTHON2INTERP_FOUND)
# Fail if no LIBS were found
if (NOT PYTHON2LIBS_FOUND AND NOT PYTHON3LIBS_FOUND)
message(FATAL_ERROR "At least one python lib is required")
endif (NOT PYTHON2LIBS_FOUND AND NOT PYTHON3LIBS_FOUND)
endif (BUILDSWIGPYTHON OR BUILDTESTS)
# Which versions of python were found?
if (PYTHON2LIBS_FOUND AND BUILDSWIGPYTHON)
message(STATUS "Building python2 modules with python-${PYTHON2LIBS_VERSION_STRING}")
endif (PYTHON2LIBS_FOUND AND BUILDSWIGPYTHON)
if (PYTHON3LIBS_FOUND AND BUILDSWIGPYTHON)
message(STATUS "Building python3 modules with python-${PYTHON3LIBS_VERSION_STRING}")
endif (PYTHON3LIBS_FOUND AND BUILDSWIGPYTHON)
# Python2 is currently required for python documentation
if (BUILDSWIGPYTHON AND BUILDDOC AND NOT PYTHON2INTERP_FOUND)
message(FATAL_ERROR "Failed to find python2 interpreter which is required "
"to build python documentation.")
endif (BUILDSWIGPYTHON AND BUILDDOC AND NOT PYTHON2INTERP_FOUND)
# Set CMAKE_INSTALL_LIBDIR if not defined
include(GNUInstallDirs)
@ -23,12 +233,14 @@ set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation path for
# Make a version file containing the current version from git.
include (GetGitRevisionDescription)
git_describe (VERSION "--tags")
if ("x_${VERSION}" STREQUAL "x_GIT-NOTFOUND" OR "x_${VERSION}" STREQUAL "x_-128-NOTFOUND")
message (WARNING " - Install git to compile a production UPM!")
set (VERSION "v0.7.3-dirty")
# If git_describe fails, use a dirty version
if (${VERSION} MATCHES -NOTFOUND)
set (VERSION "v1.7.1")
message (WARNING "Failed to retrieve UPM version with 'git describe' (using "
"${VERSION}). Check that git is installed and this is a valid git repo.")
endif ()
message (INFO " - UPM Version ${VERSION}")
message (STATUS "UPM Version ${VERSION}")
# Parse the version information into pieces.
string (REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION}")
@ -46,46 +258,9 @@ set (upm_VERSION_MINOR ${VERSION_MINOR})
set (upm_VERSION_PATCH ${VERSION_PATCH})
set (upm_VERSION_STRING ${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH})
set (CMAKE_SWIG_FLAGS "")
option (BUILDDOC "Build all doc." OFF)
option (BUILDSWIGPYTHON "Build swig python modules." ON)
option (BUILDSWIGNODE "Build swig node modules." ON)
option (BUILDSWIGJAVA "Build swig java modules" OFF)
option (BUILDPYTHON3 "Use python3 for building/installing/testing" OFF)
option (BUILDEXAMPLES "Build C++ example binaries" OFF)
option (BUILDJAVAEXAMPLES "Build java example jars" OFF)
option (IPK "Generate IPK using CPack" OFF)
option (RPM "Generate RPM using CPack" OFF)
option (BUILDTESTS "Generate check-ups for upm" ON)
option (ENABLECXX11 "Enable C++11 standards support" ON)
# Find swig
if (BUILDSWIGPYTHON OR BUILDSWIGNODE OR BUILDSWIGJAVA)
if (BUILDSWIGNODE)
find_package (SWIG 3.0.5 REQUIRED)
else ()
find_package (SWIG REQUIRED)
endif ()
if (SWIG_FOUND)
include (${SWIG_USE_FILE})
endif ()
endif ()
# Detect arch
include (TargetArch)
target_architecture (DETECTED_ARCH)
message( INFO " - Target arch is ${DETECTED_ARCH}")
#-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")
# enable c++11 standards support unconditionally
include(CheckCXXCompilerFlag)
if (CMAKE_VERSION VERSION_LESS "3.1")
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if (COMPILER_SUPPORTS_CXX11)
@ -93,20 +268,63 @@ if (ENABLECXX11)
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)
message(FATAL_ERROR "A C++11 compliant compiler is required to build UPM.")
endif()
else()
message(WARNING "Some modules require C++11 support, and may not build without it.")
# 3.1+ uses this generic method to enable c++11
set (CMAKE_CXX_STANDARD 11)
set (CXX_STANDARD_REQUIRED ON)
set (CXX_EXTENSIONS OFF)
endif()
if (BUILDDOC)
include(CheckCCompilerFlag)
if (CMAKE_VERSION VERSION_LESS "3.1")
CHECK_C_COMPILER_FLAG("-std=c11" COMPILER_SUPPORTS_C11)
if (COMPILER_SUPPORTS_C11)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
else()
message(FATAL_ERROR "A C11 compliant C compiler is required to build UPM.")
endif()
else()
# 3.1+ uses this generic method to enable c11
set (CMAKE_C_STANDARD 11)
set (C_STANDARD_REQUIRED ON)
set (C_EXTENSIONS OFF)
endif()
# The doc target depends on the C/C++ source and all libraries
#
# doc
# > src
# > include
# > libupm_sensor0
# > libupm_sensor1
# > ...
# > libupm_sensor_n
#
# The pydoc target builds documentation with sphinx via inspection by loading
# each python2 module. Those modules must include the CXX documentation via
# a monolithic swig file generated by doxy2swig
#
# pydoc
# > _pyupm_sensor0_python2
# > libupm_sensor0
# > doxy2swig
#
# The doxy2swig target is dependent upon the doc target IF BUILDDOC=ON,
#
# doxy2swig
# > BUILDDOC=ON> doc
#
# The jsdoc target builds js documentation via yuidoc and only requires
# the doc target
#
# jsdoc > doc
#
function (CreateDocumentationTargets)
# Add a target to generate API documentation with Doxygen
find_package (Doxygen)
if (DOXYGEN_FOUND)
find_package (Doxygen 1.8 REQUIRED)
if (DOXYGEN_FOUND AND DOXYGEN_VERSION VERSION_GREATER "1.8")
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
if (BUILDSWIGJAVA)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.java.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-java @ONLY)
@ -115,141 +333,115 @@ if (BUILDDOC)
foreach(PNG_FILE ${PNG_FILES})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/${PNG_FILE} ${CMAKE_CURRENT_BINARY_DIR}/html/docs/${PNG_FILE} COPYONLY)
endforeach()
add_custom_target (doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
# Custom command to run doxygen (note depends on ALL UPM C++ targets)
add_custom_command (
OUTPUT ${CMAKE_BINARY_DIR}/xml/index.xml
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ${UPM_TARGETS_CXX}
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
COMMAND tar -czf html/xml.tar.gz -C xml .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
endif (DOXYGEN_FOUND)
COMMENT "Generating C/C++ API documentation with Doxygen"
VERBATIM)
add_custom_target(doc DEPENDS ${CMAKE_BINARY_DIR}/xml/index.xml)
else ()
message (SEND_ERROR "ERROR - Failed to find a compatible version of Doxygen. API doc will not be generated")
endif (DOXYGEN_FOUND AND DOXYGEN_VERSION VERSION_GREATER "1.8")
# Check if Sphinx is installed and add target to generate API documentation
find_package (Sphinx)
if(SPHINX_FOUND AND BUILDSWIGPYTHON)
# Python required for Sphinx build
find_package (PythonLibs ${PYTHONBUILD_VERSION} REQUIRED)
string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING})
list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR)
list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR)
# Currently, the per-module documentation for python is generated from the
# python2 modules.
# Since python2 is required for documentation, only copy from python2 paths, this
# ensures that sphinx doesn't run across python2 and python3 binaries. When running
# the sphinx tools, explicitly run from the python2 interpreter (tested with the sphinx
# 1.3.6 python2 and python3 modules).
if(BUILDSWIGPYTHON)
# Generate python module documentation from doxygen collateral
#
# doxygen index.xml -> doxy2swig.py -> pyupm_doxy2swig.i
add_custom_command (
OUTPUT ${CMAKE_BINARY_DIR}/src/pyupm_doxy2swig.i
COMMAND ${PYTHON2_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/doxy2swig.py
${CMAKE_BINARY_DIR}/xml/index.xml --quiet
${CMAKE_BINARY_DIR}/src/pyupm_doxy2swig.i
COMMENT "Generating pyupm_doxy2swig.i from Doxygen output for use by SWIG"
DEPENDS doc
VERBATIM)
add_custom_target(pyupm_doxy2swig DEPENDS ${CMAKE_BINARY_DIR}/src/pyupm_doxy2swig.i)
foreach (_python2_target ${UPM_TARGETS_PYTHON2})
add_dependencies(${_python2_target} pyupm_doxy2swig)
endforeach()
find_package (Sphinx 1.3 REQUIRED)
if (SPHINX_FOUND AND SPHINX_VERSION VERSION_GREATER "1.3")
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
add_custom_command (
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pydoc.stamp
COMMAND rm -r -f ${CMAKE_BINARY_DIR}/pyupm && mkdir -p ${CMAKE_BINARY_DIR}/pyupm
COMMAND find ${CMAKE_BINARY_DIR}/src -name "_pyupm_*.so" -exec cp {} ${CMAKE_BINARY_DIR}/pyupm \;
COMMAND find ${CMAKE_BINARY_DIR}/src -name "pyupm_*.py" -exec cp {} ${CMAKE_BINARY_DIR}/pyupm \;
COMMAND ${SPHINX_API_EXECUTABLE} -f -o pydoc ${CMAKE_BINARY_DIR}/pyupm
COMMAND find ${CMAKE_BINARY_DIR}/src -path "*python${MIN_VER_PYTHON2}/_pyupm_*.so" -exec cp {} ${CMAKE_BINARY_DIR}/pyupm \;
COMMAND find ${CMAKE_BINARY_DIR}/src -path "*python${MIN_VER_PYTHON2}/pyupm_*.py" -exec cp {} ${CMAKE_BINARY_DIR}/pyupm \;
COMMAND ${PYTHON2_EXECUTABLE} ${SPHINX_API_EXECUTABLE} -f -o pydoc ${CMAKE_BINARY_DIR}/pyupm
# TODO: use a separate cmake FILE module for string replacement instead
COMMAND ${SPHINX_EXECUTABLE} -b html pydoc html/python
COMMAND ${PYTHON2_EXECUTABLE} ${SPHINX_EXECUTABLE} -b html pydoc html/python
COMMAND sed -i.bak s|\">pyupm_|\">|g html/python/index.html html/python/modules.html
COMMAND sed -i.bak s|[[:space:]][mM]odule</a>|</a>|g html/python/index.html html/python/modules.html
DEPENDS doc
COMMAND cmake -E touch ${CMAKE_CURRENT_BINARY_DIR}/pydoc.stamp
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Sphinx" VERBATIM
)
COMMENT "Generating Python API documentation with Sphinx"
DEPENDS doc ${UPM_TARGETS_PYTHON2}
VERBATIM)
add_custom_target(pydoc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pydoc.stamp)
else ()
message (SEND_ERROR "ERROR - Failed to find a compatible version of Sphinx. Python API doc will not be generated")
endif ()
endif(BUILDSWIGPYTHON)
# Check if Yuidoc is installed and add target for API documentation
find_package(Yuidoc)
if(YUIDOC_FOUND AND BUILDSWIGNODE)
# Node required for Yuidoc documentation
find_package(Node)
file(GLOB_RECURSE JSDOC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/doxy/node doxy/node/*)
foreach(JSDOC_FILE ${JSDOC_FILES})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxy/node/${JSDOC_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${JSDOC_FILE} COPYONLY)
endforeach()
add_custom_target(jsdoc ALL
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 ${NODEJS_EXECUTABLE} tolower -i html/node
DEPENDS doc
if(BUILDSWIGNODE)
find_package (Yuidoc 0.10 REQUIRED)
if (YUIDOC_FOUND AND YUIDOC_VERSION VERSION_GREATER "0.10")
add_custom_command (
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/jsdoc/jsdoc.stamp
COMMAND ${CMAKE_SOURCE_DIR}/doxy/doxygen2jsdoc/docgen.js -m upm -i xml -o jsdoc -t ${CMAKE_CURRENT_SOURCE_DIR}/src -g ../../
COMMAND ${YUIDOC_EXECUTABLE} -C --no-sort --helpers ${CMAKE_SOURCE_DIR}/doxy/node/generators/yuidoc/helper.js --themedir ${CMAKE_SOURCE_DIR}/doxy/node/generators/yuidoc/tmpl -o html/node jsdoc/yuidoc/upm
COMMAND ${CMAKE_SOURCE_DIR}/doxy/doxygen2jsdoc/tolower.js -i html/node
COMMAND cmake -E touch ${CMAKE_CURRENT_BINARY_DIR}/jsdoc/jsdoc.stamp
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Yuidoc" VERBATIM
)
endif()
endif()
if (IPK)
# Get target package arch from Yocto ADT sysroot if set or host OS, mapping to Ubuntu name if necessary
if (DEFINED ENV{OECORE_TARGET_SYSROOT})
GET_FILENAME_COMPONENT (DETECTED_SYSROOT $ENV{OECORE_TARGET_SYSROOT} NAME)
string (REGEX REPLACE "-poky-linux" "" TARGET_ARCH "${DETECTED_SYSROOT}")
COMMENT "Generating Javascript API documentation with Yuidoc"
DEPENDS doc
VERBATIM)
add_custom_target(jsdoc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/jsdoc/jsdoc.stamp)
else ()
# Debian uses amd64 to denote x86_64
if (DETECTED_ARCH STREQUAL "x86_64")
set (TARGET_ARCH "amd64")
else ()
set (TARGET_ARCH ${DETECTED_ARCH})
message (SEND_ERROR "ERROR - Failed to find a compatible version of Yuidoc. Node.js API doc will not be generated")
endif ()
endif ()
message (INFO " - Package arch is ${TARGET_ARCH}")
endif(BUILDSWIGNODE)
endfunction()
set(CPACK_GENERATOR "DEB")
set(OPKG_ARCH ${TARGET_ARCH})
set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
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}")
set(CPACK_PACKAGE_NAME "upm")
set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${TARGET_ARCH})
set(CPACK_SYSTEM_NAME ${TARGET_ARCH})
set(CPACK_DEBIAN_PACKAGE_DEPENDS "mraa (>= ${MRAA_VERSION})")
set(CPACK_DEBIAN_PACKAGE_PROVIDES "upm-dev, upm-dbg, upm-doc")
set(CPACK_DEBIAN_PACKAGE_REPLACES ${CPACK_DEBIAN_PACKAGE_PROVIDES})
set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CPACK_DEBIAN_PACKAGE_PROVIDES})
set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}")
include (CPack)
endif()
# UPM common headers
set (UPM_COMMON_HEADER_DIRS ${CMAKE_HOME_DIRECTORY}/include)
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_VERSION
"${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}")
include(CPack)
endif()
if (BUILDSWIGPYTHON OR BUILDTESTS)
if (BUILDPYTHON3)
set (PYTHONBUILD_VERSION 3)
else ()
set (PYTHONBUILD_VERSION 2.7)
endif ()
endif ()
# Generate a build-only C++ header to add functionality to SWIG'ed modules
configure_file (${PROJECT_SOURCE_DIR}/cmake/modules/version.hpp.in ${PROJECT_BINARY_DIR}/src/version.hpp @ONLY)
# UPM source
add_subdirectory (src)
if(BUILDEXAMPLES)
add_subdirectory (examples/c++)
endif()
if(BUILDJAVAEXAMPLES)
add_subdirectory (examples/java)
endif()
# UPM examples
add_subdirectory (examples)
# Python interp is previously found if BUILDTESTS=ON
if (BUILDTESTS)
find_package (PythonInterp ${PYTHONBUILD_VERSION} REQUIRED)
enable_testing ()
add_subdirectory (tests)
endif()
# Setup documentation AFTER all source targets have been added
if (BUILDDOC)
CreateDocumentationTargets()
endif()
# Install C headers
install(DIRECTORY include/ DESTINATION include/upm
COMPONENT ${CMAKE_PROJECT_NAME}-dev
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")

44
CONTRIBUTING Normal file
View File

@ -0,0 +1,44 @@
# Contributing to Eclipse UPM
Thanks for your interest in this project.
## Project description
The Eclipse 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 Eclipse MRAA APIs.
* https://projects.eclipse.org/projects/iot.upm
## Developer resources
Information regarding source code management, builds, coding standards, and
more.
* https://projects.eclipse.org/projects/iot.upm/developer
The project maintains the following source code repositories
## Eclipse Contributor Agreement
Before your contribution can be accepted by the project team contributors must
electronically sign the Eclipse Contributor Agreement (ECA).
* http://www.eclipse.org/legal/ECA.php
Commits that are provided by non-committers must have a Signed-off-by field in
the footer indicating that the author is aware of the terms by which the
contribution has been provided to the project. The non-committer must
additionally have an Eclipse Foundation account and must have a signed Eclipse
Contributor Agreement (ECA) on file.
For more information, please see the Eclipse Committer Handbook:
https://www.eclipse.org/projects/handbook/#resources-commit
## Contact
Contact the project developers via the project's "dev" list.
*

View File

@ -1,4 +1,5 @@
Copyright © 2014-2015 Intel Corporation
The MIT License (MIT)
Copyright © 2014-2019 Intel Corporation and others
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View File

@ -1,57 +1,56 @@
UPM (Useful Packages & Modules) Sensor/Actuator repository for MRAA
<p align="center">
<img src="https://github.com/eclipse/upm/blob/master/docs/icons/upm_logo.png" height="150px" width="auto" algt="UPM Logo"/>
</p>
Eclipse UPM Sensor and Actuator Repository
==============
The UPM repository provides software drivers for a wide variety of commonly
used sensors and actuators. These software drivers interact with the
The Eclipse UPM repository provides software drivers for a wide variety of
commonly used sensors and actuators. These software drivers interact with the
underlying hardware platform (or microcontroller), as well as with the attached
sensors, through calls to [MRAA](https://github.com/intel-iot-devkit/mraa) APIs.
sensors, through calls to [Eclipse MRAA](https://github.com/eclipse/mraa) APIs.
Programmers can access the interfaces for each sensor by including the sensors
Programmers can access the interfaces for each sensor by including the sensor's
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.
As of UPM 2.0, sensor initialization can also be done, in most cases, via
overloaded constructors that accept string identifiers.
C++ interfaces have been defined for the following sensor/actuator types, but
they are subject to change:
We endorse additions that implement the generic C and C++ interfaces provided
with the libraries. With the 2.0 release, UPM introduces the following sensor
interfaces:
```
iAcceleration, iAngle, iButton, iClock, iCollision, iDistance,
iDistanceInterrupter, iEC, iElectromagnet, iEmg, iGas, iGps, iGyroscope,
iHallEffect, iHeartRate, iHumidity, iLight, iLineFinder, iMagnetometer,
iMoisture, iMotion, iOrp, iPH, iPressure, iProximity, iTemperature, iVDiv,
iWater.
```
The developer community is invited to propose new interfaces for actuator types.
* 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.
The UPM project is joining the Eclipse Foundation as an Eclipse IoT project.
You can read more about this [here](https://projects.eclipse.org/proposals/eclipse-upm).
### Example
A sensor/actuator is expected to work as such (here is the MMA7660 accelerometer API):
```C++
// Instantiate an MMA7660 on I2C bus 0
upm::MMA7660 *accel = new upm::MMA7660(MMA7660_I2C_BUS,
upm::MMA7660 *accel = new upm::MMA7660(MMA7660_DEFAULT_I2C_BUS,
MMA7660_DEFAULT_I2C_ADDR);
// place device in standby mode so we can write registers
accel->setModeStandby();
// enable 64 samples per second
accel->setSampleRate(upm::MMA7660::AUTOSLEEP_64);
accel->setSampleRate(MMA7660_AUTOSLEEP_64);
// place device into active mode
accel->setModeActive();
while (shouldRun)
{
int x, y, z;
accel->getRawValues(&x, &y, &z);
cout << "Raw values: x = " << x
<< " y = " << y
<< " z = " << z
<< endl;
float ax, ay, az;
accel->getAcceleration(&ax, &ay, &az);
@ -64,47 +63,52 @@ A sensor/actuator is expected to work as such (here is the MMA7660 accelerometer
}
```
Browse through the list of all [examples](https://github.com/intel-iot-devkit/upm/tree/master/examples).
Browse through the list of all [examples](https://github.com/eclipse/upm/tree/master/examples).
Multi-sensor samples for the starter and specialized kits can be found in the
Multi-sensor samples for starter and specialized kits can be found in the
[iot-devkit-samples](https://github.com/intel-iot-devkit/iot-devkit-samples) repository.
### Supported Sensors
Supported [sensor list](http://iotdk.intel.com/docs/master/upm/modules.html) from API documentation.
You can also refer to the [Intel® IoT Developer Zone](https://software.intel.com/iot/sensors).
### IDE Support and More
### IDE Integration
The UPM project includes support for multiple industrial-grade sensors, actuators, radios,
protocols and standards in use today. It is also highly integrated with the Eclipse IDE
through the help of the Foundation's partners.
Learn more about [tools](https://software.intel.com/en-us/tools-by-segment/systems-iot).
If you would like to create projects and run the UPM samples using an Intel recommended IDE,
please refer to the Intel Developer Zone IDE page.
### Installing UPM
<a href="https://software.intel.com/iot/software/ide"><img src="docs/icons/allides.png"/></a>
Find notes on how to install UPM on various OS'es on this [page](docs/installing.md).
### Building UPM
See building documentation [here](docs/building.md).
### Making your own UPM module
[![Build Status](https://travis-ci.org/intel-iot-devkit/upm.svg?branch=master)](https://travis-ci.org/intel-iot-devkit/upm)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=upm-master&metric=alert_status)](https://sonarcloud.io/dashboard?id=upm-master)
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).
Guide on creating Java [bindings](docs/creating_java_bindings.md).
### Naming conventions and rules for new UPM contributions
### Guidelines and rules for new UPM contributions
Before you begin development, take a look at our naming [conventions](docs/naming.md).
The name you pick for a newly added sensor needs to be unique in the UPM library.
Also, please read the guidelines for contributions [to UPM](docs/contributions.md).
Don't forget to check the documentation [section](docs/documentation.md).
Next, review the project's [contribution guide](docs/contributions.md).
Make sure you add yourself as an author on every new code file submitted.
If you are providing a fix with significant changes, feel free to add yourself
as a contributor. Signing-off your commits is mandatory.
as a contributor. Signing-off your commits and accepting the ECA is mandatory
for making new contributions to this project.
Documenting your code is also a big part of the task. We have a strict set of
tags used to classify our sensors and their capabilities. You can find out more
about this in our [section](docs/documentation.md) on documenting a sensor API.
Finally, if you really want to ensure consistency with the rest of the library,
and the intel-iot-devkit repositories in general, take a look at our extensive
[author guide](docs/guidelines.md).
API Documentation
==============
@ -120,8 +124,6 @@ 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

@ -1,25 +0,0 @@
# this toolchain file comes from gnuradio project
set( CMAKE_SYSTEM_NAME Linux )
#set( CMAKE_C_COMPILER $ENV{CC} )
#set( CMAKE_CXX_COMPILER $ENV{CXX} )
string(REGEX MATCH "sysroots/([a-zA-Z0-9]+)" CMAKE_SYSTEM_PROCESSOR $ENV{SDKTARGETSYSROOT})
string(REGEX REPLACE "sysroots/" "" CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR})
set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE )
set( CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE ) #same flags for C sources
set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE ) #same flags for C sources
set( CMAKE_LIBRARY_PATH ${OECORE_TARGET_SYSROOT}/usr/lib )
set( CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} $ENV{OECORE_NATIVE_SYSROOT} )
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
set( CMAKE_INSTALL_PREFIX $ENV{OECORE_TARGET_SYSROOT}/usr CACHE STRING "" FORCE)
set( ORC_INCLUDE_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/include/orc-0.4 )
set( ORC_LIBRARY_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/lib )
# for java
set( JAVA_AWT_INCLUDE_PATH $ENV{JAVA_HOME}/include CACHE PATH "" FORCE)
set( JAVA_AWT_LIBRARY $ENV{JAVA_HOME}/jre/lib/amd64/libjawt.so CACHE FILEPATH "" FORCE)
set( JAVA_INCLUDE_PATH $ENV{JAVA_HOME}/include CACHE PATH "" FORCE)
set( JAVA_INCLUDE_PATH2 $ENV{JAVA_HOME}/include/linux CACHE PATH "" FORCE)
set( JAVA_JVM_LIBRARY $ENV{JAVA_HOME}/jre/lib/amd64/libjvm.so CACHE FILEPATH "" FORCE)

View File

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

View File

@ -1,17 +1,15 @@
# Macro to add directory to NODEJS_INCLUDE_DIRS if it exists and is not /usr/include
macro(add_include_dir dir)
# Macro to add directory to NODEJS_INCLUDE_DIRS if it exists and is not /usr/include
macro(add_include_dir dir)
if (IS_DIRECTORY ${dir} AND NOT ${dir} STREQUAL "/usr/include")
set(NODEJS_INCLUDE_DIRS ${NODEJS_INCLUDE_DIRS} ${dir})
endif()
endmacro()
find_program (NODEJS_EXECUTABLE NAMES node nodejs
HINTS
$ENV{NODE_DIR}
PATH_SUFFIXES bin
DOC "Node.js interpreter"
)
DOC "Node.js interpreter")
include (FindPackageHandleStandardArgs)
@ -23,13 +21,20 @@ if (UV_ROOT_DIR)
endif()
# Now look for node. Flag an error if not found
find_path (NODE_ROOT_DIR "include/node/node.h" "include/src/node.h"
PATHS /usr/include/nodejs /usr/local/include/nodejs /usr/local/include)
find_path (NODE_ROOT_DIR
NAMES node.h src/node.h
PATH_SUFFIXES node node4 node5 node6 node7 node8 nodejs
PATHS /usr/include /usr/local/include)
if (NODE_ROOT_DIR)
add_include_dir(${NODE_ROOT_DIR}/include/src)
add_include_dir(${NODE_ROOT_DIR}/include/node)
add_include_dir(${NODE_ROOT_DIR}/include/deps/v8/include)
add_include_dir(${NODE_ROOT_DIR})
add_include_dir(${NODE_ROOT_DIR}/deps/uv/include)
add_include_dir(${NODE_ROOT_DIR}/deps/v8/include)
add_include_dir(${NODE_ROOT_DIR}/include/deps/uv/include)
add_include_dir(${NODE_ROOT_DIR}/include/deps/v8/include)
add_include_dir(${NODE_ROOT_DIR}/include/node)
add_include_dir(${NODE_ROOT_DIR}/include/src)
add_include_dir(${NODE_ROOT_DIR}/src)
else()
unset(NODEJS_INCLUDE_DIRS)
message(ERROR " - node.h not found")
@ -49,11 +54,6 @@ if (NOT UV_ROOT_DIR)
message(ERROR " - uv.h not found")
endif()
find_package_handle_standard_args (Nodejs DEFAULT_MSG
NODEJS_EXECUTABLE
NODEJS_INCLUDE_DIRS
)
if (NODEJS_EXECUTABLE)
execute_process(COMMAND ${NODEJS_EXECUTABLE} --version
OUTPUT_VARIABLE _VERSION
@ -85,13 +85,15 @@ if (NODEJS_EXECUTABLE)
set (V8_VERSION_MINOR "28")
set (V8_VERSION_PATCH "72")
set (V8_VERSION_STRING "3.28.72")
message ("defaulted to node 0.10.30")
message (STATUS "defaulted to node 0.10.30")
endif ()
string (REGEX REPLACE "\n" "" NODE_VERSION_STRING ${NODE_VERSION_STRING})
string (REGEX REPLACE "\n" "" V8_VERSION_STRING ${V8_VERSION_STRING})
message ("INFO - Node version is " ${NODE_VERSION_STRING})
message ("INFO - Node using v8 " ${V8_VERSION_STRING})
mark_as_advanced (NODEJS_EXECUTABLE)
endif ()
mark_as_advanced (NODEJS_EXECUTABLE)
mark_as_advanced (NODEJS_EXECUTABLE)
find_package_handle_standard_args (Nodejs
REQUIRED_VARS NODEJS_EXECUTABLE NODEJS_INCLUDE_DIRS
VERSION_VAR NODE_VERSION_STRING)
message(STATUS "Found v8: ${V8_ROOT_DIR}/v8.h (found version \"${V8_VERSION_STRING}\")")
endif ()

View File

@ -0,0 +1,71 @@
# FindNpm
# --------
#
# Find npm
#
# This module finds an installed npm. It sets the following variables:
#
# NPM_FOUND - Set to true if npm is found
# NPM_DIR - The directory where npm is installed
# NPM_GLOBAL_NODE_MODULE_DIR - The global node_modules directory
# NPM_EXECUTABLE - The path to the npm executable
# NPM_VERSION - The version number of the npm executable
find_program(NPM_EXECUTABLE NAMES npm HINTS /usr)
# If npm was found, fill in the rest
if (NPM_EXECUTABLE)
# Set the global node_modules location
execute_process(COMMAND ${NPM_EXECUTABLE} root -g
OUTPUT_VARIABLE NPM_GLOBAL_NODE_MODULE_DIR
ERROR_VARIABLE NPM_root_g_error
RESULT_VARIABLE NPM_root_g_result_code)
# Remove and newlines
string (STRIP ${NPM_GLOBAL_NODE_MODULE_DIR} NPM_GLOBAL_NODE_MODULE_DIR)
if(NPM_root_g_result_code)
if(NPM_FIND_REQUIRED)
message(SEND_ERROR "Command \"${NPM_EXECUTABLE} root -g\" failed with output:\n${NPM_root_g_error}")
else ()
message(STATUS "Command \"${NPM_EXECUTABLE} root -g\" failed with output:\n${NPM_root_g_error}")
endif ()
endif()
unset(NPM_root_g_error)
unset(NPM_root_g_result_code)
# Set the NPM dir
if (EXISTS "${NPM_GLOBAL_NODE_MODULE_DIR}/npm")
set(NPM_DIR "${NPM_GLOBAL_NODE_MODULE_DIR}/npm")
endif()
# Set the VERSION
execute_process(COMMAND ${NPM_EXECUTABLE} -v
OUTPUT_VARIABLE NPM_VERSION
ERROR_VARIABLE NPM_version_error
RESULT_VARIABLE NPM_version_result_code)
if(NPM_version_result_code)
if(NPM_FIND_REQUIRED)
message(SEND_ERROR "Command \"${NPM_EXECUTABLE} -v\" failed with output:\n${NPM_version_error}")
else()
message(STATUS "Command \"${NPM_EXECUTABLE} -v\" failed with output:\n${NPM_version_error}")
endif ()
endif ()
unset(NPM_version_error)
unset(NPM_version_result_code)
# Remove and newlines
string (STRIP ${NPM_VERSION} NPM_VERSION)
set (NPM_FOUND TRUE)
else()
# Fail on REQUIRED
if (Npm_FIND_REQUIRED)
message(SEND_ERROR "Failed to find npm executable")
endif()
endif ()
find_package_handle_standard_args(NPM
REQUIRED_VARS NPM_EXECUTABLE NPM_DIR
VERSION_VAR NPM_VERSION )
mark_as_advanced(NPM_DIR NPM_GLOBAL_NODE_MODULE_DIR NPM_EXECUTABLE NPM_VERSION)

View File

@ -17,14 +17,16 @@ find_package_handle_standard_args (Sphinx DEFAULT_MSG
SPHINX_API_EXECUTABLE
)
# Get Sphinx version
# Get Sphinx Version
if (SPHINX_EXECUTABLE)
execute_process(COMMAND ${SPHINX_EXECUTABLE} --version
OUTPUT_VARIABLE SPHINX_VERSION)
if(SPHINX_VERSION)
string(REGEX MATCH "([0-9]\\.[0-9]\\.[0-9])" SPHINX_VERSION_STR ${SPHINX_VERSION})
message ("INFO - Sphinx version is " ${SPHINX_VERSION_STR})
endif()
OUTPUT_VARIABLE SPHINX_VERSION_STRING
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE)
if (SPHINX_VERSION_STRING)
string(REPLACE "Sphinx (sphinx-build) " "" SPHINX_VERSION ${SPHINX_VERSION_STRING})
message (STATUS "Sphinx version is ${SPHINX_VERSION}")
endif ()
endif ()
mark_as_advanced (SPHINX_EXECUTABLE)

View File

@ -0,0 +1,20 @@
find_program (UPM_CORDOVA_BINDING NAMES upm-cordova-binding
DOC "UPM Cordova binding generator")
include (FindPackageHandleStandardArgs)
# Get version
if (UPM_CORDOVA_BINDING)
execute_process(COMMAND ${NPM_EXECUTABLE} info upm-cordova-binding version
OUTPUT_VARIABLE UPM_CORDOVA_BINDING_VERSION
ERROR_VARIABLE UPM_CORDOVA_BINDING_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE)
endif()
find_package_handle_standard_args(UpmCordovaGenerator
REQUIRED_VARS UPM_CORDOVA_BINDING
VERSION_VAR UPM_CORDOVA_BINDING_VERSION
FAIL_MESSAGE "Unable to find the npm package for generating UPM Cordova bindings. The generator can be installed via: 'npm install -g upm-cordova-binding'")
mark_as_advanced (UPM_CORDOVA_BINDING UPM_CORDOVA_BINDING_VERSION)

View File

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

View File

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

View File

@ -1,136 +0,0 @@
# Based on the Qt 5 processor detection code, so should be very accurate
# https://qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/global/qprocessordetection.h
# Currently handles arm (v5, v6, v7), x86 (32/64), ia64, and ppc (32/64)
# Regarding POWER/PowerPC, just as is noted in the Qt source,
# "There are many more known variants/revisions that we do not handle/detect."
set(archdetect_c_code "
#if defined(__arm__) || defined(__TARGET_ARCH_ARM)
#if defined(__ARM_ARCH_7__) \\
|| defined(__ARM_ARCH_7A__) \\
|| defined(__ARM_ARCH_7R__) \\
|| defined(__ARM_ARCH_7M__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 7)
#error cmake_ARCH armv7
#elif defined(__ARM_ARCH_6__) \\
|| defined(__ARM_ARCH_6J__) \\
|| defined(__ARM_ARCH_6T2__) \\
|| defined(__ARM_ARCH_6Z__) \\
|| defined(__ARM_ARCH_6K__) \\
|| defined(__ARM_ARCH_6ZK__) \\
|| defined(__ARM_ARCH_6M__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 6)
#error cmake_ARCH armv6
#elif defined(__ARM_ARCH_5TEJ__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5)
#error cmake_ARCH armv5
#else
#error cmake_ARCH arm
#endif
#elif defined(__i586) || defined(__i586__)
#error cmake_ARCH i586
#elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
#error cmake_ARCH i386
#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
#error cmake_ARCH x86_64
#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
#error cmake_ARCH ia64
#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \\
|| defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \\
|| defined(_M_MPPC) || defined(_M_PPC)
#if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__)
#error cmake_ARCH ppc64
#else
#error cmake_ARCH ppc
#endif
#endif
#error cmake_ARCH unknown
")
# Set ppc_support to TRUE before including this file or ppc and ppc64
# will be treated as invalid architectures since they are no longer supported by Apple
function(target_architecture output_var)
if(APPLE AND CMAKE_OSX_ARCHITECTURES)
# On OS X we use CMAKE_OSX_ARCHITECTURES *if* it was set
# First let's normalize the order of the values
# Note that it's not possible to compile PowerPC applications if you are using
# the OS X SDK version 10.6 or later - you'll need 10.4/10.5 for that, so we
# disable it by default
# See this page for more information:
# http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5-sdk-support-to-xcode-4
# Architecture defaults to i386 or ppc on OS X 10.5 and earlier, depending on the CPU type detected at runtime.
# On OS X 10.6+ the default is x86_64 if the CPU supports it, i386 otherwise.
foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES})
if("${osx_arch}" STREQUAL "ppc" AND ppc_support)
set(osx_arch_ppc TRUE)
elseif("${osx_arch}" STREQUAL "i386")
set(osx_arch_i386 TRUE)
elseif("${osx_arch}" STREQUAL "x86_64")
set(osx_arch_x86_64 TRUE)
elseif("${osx_arch}" STREQUAL "ppc64" AND ppc_support)
set(osx_arch_ppc64 TRUE)
else()
message(FATAL_ERROR "Invalid OS X arch name: ${osx_arch}")
endif()
endforeach()
# Now add all the architectures in our normalized order
if(osx_arch_ppc)
list(APPEND ARCH ppc)
endif()
if(osx_arch_i386)
list(APPEND ARCH i386)
endif()
if(osx_arch_x86_64)
list(APPEND ARCH x86_64)
endif()
if(osx_arch_ppc64)
list(APPEND ARCH ppc64)
endif()
else()
file(WRITE "${CMAKE_BINARY_DIR}/arch.c" "${archdetect_c_code}")
enable_language(C)
# Detect the architecture in a rather creative way...
# This compiles a small C program which is a series of ifdefs that selects a
# particular #error preprocessor directive whose message string contains the
# target architecture. The program will always fail to compile (both because
# file is not a valid C program, and obviously because of the presence of the
# #error preprocessor directives... but by exploiting the preprocessor in this
# way, we can detect the correct target architecture even when cross-compiling,
# since the program itself never needs to be run (only the compiler/preprocessor)
try_run(
run_result_unused
compile_result_unused
"${CMAKE_BINARY_DIR}"
"${CMAKE_BINARY_DIR}/arch.c"
COMPILE_OUTPUT_VARIABLE ARCH
CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
)
# Parse the architecture name from the compiler output
string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}")
# Get rid of the value marker leaving just the architecture name
string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}")
# If we are compiling with an unknown architecture this variable should
# already be set to "unknown" but in the case that it's empty (i.e. due
# to a typo in the code), then set it to unknown
if (NOT ARCH)
set(ARCH unknown)
endif()
endif()
set(${output_var} "${ARCH}" PARENT_SCOPE)
endfunction()

View File

@ -1,4 +0,0 @@
#include "version.h"
const char* gVERSION = "@VERSION@";
const char* gVERSION_SHORT = "@VERSION_SHORT@";

View File

@ -0,0 +1,6 @@
#include <string>
inline std::string getVersion()
{
return "@upm_VERSION_STRING@";
}

122
docker-compose.yaml Normal file
View File

@ -0,0 +1,122 @@
version: '2.1'
services:
base:
image: inteliotdevkit/upm-base
environment:
- http_proxy
- https_proxy
- no_proxy
- BUILDDOC=${BUILDDOC:-OFF}
- BUILDCPP=${BUILDCPP:-ON}
- BUILDFTI=${BUILDFTI:-ON}
- BUILDSWIGPYTHON=${BUILDSWIGPYTHON:-OFF}
- BUILDSWIGJAVA=${BUILDSWIGJAVA:-OFF}
- BUILDCORDOVA=${BUILDCORDOVA:-OFF}
- BUILDSWIGNODE=${BUILDSWIGNODE:-OFF}
- BUILDEXAMPLES=${BUILDEXAMPLES:-OFF}
- CMAKE_BUILD_TYPE
- IPK=${IPK:-OFF}
- RPM=${RPM:-OFF}
- NPM=${NPM:-OFF}
- BUILDTESTS=${BUILDTESTS:-ON}
- CC=${CC:-clang-3.8}
- CXX=${CXX:-clang++-3.8}
- NODE_VERSION=${NODE_VERSION:-v4.4.7}
- WERROR=${WERROR:-ON}
volumes:
- .:${UPM_SRC_DIR:-/usr/src/app}
all:
extends: base
image: inteliotdevkit/upm-all
minimal:
extends: base
environment:
- BUILDFTI=OFF
command: bash -c "./scripts/run-cmake.sh && cd build && make && ctest -R unit --output-on-failure"
doc:
extends: all
environment:
- BUILDSWIGPYTHON=ON
- BUILDSWIGJAVA=ON
- BUILDSWIGNODE=ON
- BUILDDOC=ON
command: bash -c "./scripts/run-cmake.sh && ./scripts/build-doc.sh"
examples:
extends: all
environment:
- BUILDSWIGPYTHON=ON
- BUILDSWIGJAVA=ON
- BUILDSWIGNODE=ON
- BUILDEXAMPLES=ON
command: bash -c "./scripts/run-cmake.sh && cd build && make -j8"
npm:
extends: all
environment:
- NPM=ON
- BUILDDOC=OFF
command: bash -c "./scripts/run-cmake.sh && make -Cbuild -j8 npmpkg"
sonar-scan:
extends: base
image: inteliotdevkit/upm-sonar
environment:
- BUILDTESTS=OFF
- SONAR_TOKEN
- SONAR_ORG
- SONAR_PROJ_KEY
- TRAVIS_BRANCH
- TRAVIS_PULL_REQUEST
- TRAVIS_REPO_SLUG
- TRAVIS_PULL_REQUEST_SLUG
- GITHUB_TOKEN
command: bash -c "./scripts/run-cmake.sh && cd build && ../scripts/sonar-scan.sh"
python:
extends: base
image: inteliotdevkit/upm-python
environment:
- BUILDSWIGPYTHON=ON
command: bash -c "./scripts/run-cmake.sh && cd build && make -j8 && make -j8 install && ldconfig && ctest --output-on-failure"
java:
extends: base
image: inteliotdevkit/upm-java
environment:
- BUILDSWIGJAVA=ON
command: bash -c "./scripts/run-cmake.sh && cd build && make -j8 && make -j8 install && ldconfig && ctest --output-on-failure"
android:
extends: java
image: inteliotdevkit/upm-android
environment:
- BUILDTESTS=OFF
command: bash -c "./scripts/build-android.sh"
cordova:
extends: all
environment:
- BUILDSWIGJAVA=ON
- BUILDCORDOVA=ON
command: bash -c "./scripts/run-cmake.sh && cd build && make -j8 && make -j8"
node4:
extends: base
image: inteliotdevkit/upm-node4
environment:
- BUILDSWIGNODE=ON
command: bash -c "./scripts/run-cmake.sh && cd build && make -j8 && make -j8 install && ldconfig && ctest --output-on-failure -E examplenames_js"
node5:
extends: node4
image: inteliotdevkit/upm-node5
node6:
extends: node4
image: inteliotdevkit/upm-node6

View File

@ -4,15 +4,275 @@ API Changes {#apichanges}
Here's a list of other API changes made to the library that break source/binary
compatibility between releases:
# v2.0.0
* Sensors implementing the old interfaces (bme280, bmpx8x, si7005, si1132,
max44009, lp8860, ds1808lc, hlg150h) have been updated to use the new ones,
hence some function names and parameters will be different.
* Removed deprecated basic grove classes from project, see API changes for
v1.1.0 and prior for a complete list
# v1.7.0
* The interface of **kx122** has been modified to return values instead
of receiving pointers. This applies to member functions: getWhoAmI,
getInterruptSource, getBufferStatus, getRawBufferSamples, and
getBufferSamples.
* The **tm1637** constructor has been updated and the fast GPIO parameter
has been removed with the deprecation of supporting MRAA functions. The
GPIO lines will initialize by default in fast mode when available.
* The generic **nmea_gps** library for GPS devices has been greatly enhanced
with new APIs to offer better control over acquisition intervals and simplify
parsing of the returned data.
# v1.6.0
* Several C libraries had their init function pin type modified from uint8_t
to int allowing usage with subplatforms
* Our **led** class constructor has been overloaded with a string based
variant that uses the new MRAA LED APIs
* The **i2clcd** library has finally been renamed to **lcd** and is now
mostly considered a bundle for ssd lcd display controllers only
* The **zfm20** class constructor has been overloaded with a string variant
that allows initialization using any UART device
# v1.5.0
* **VEML6070** This sensor class no longer needs an I2C address when
initialized, since they are fixed. Only the I2C bus number needs to
be provided.
# v1.3.0
* **The lsm303 driver has been renamed** 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.
# v1.2.0
* **Note for all drivers ported to C** As a general note concerning
all of the drivers that have been ported to C: **external constants
have likely been renamed**. Previously in C++, most of these constants
were defined as enums in the *upm::classname* namespace.
For drivers written in C, all of these constants are no longer in
a class (or UPM) namespace, and instead have the driver name
prefixed to the original value.
The driver name is prefixed to these constants to avoid name
collisions when using multiple drivers in a given application, and
to make it clear which constants belong to which driver.
For drivers that used *#define* for constants, only the prefix has
been added if not already present. In some cases, names that were
not very descriptive were changed, for example *ADDR* renamed to
*BMPX8X_DEFAULT_I2C_ADDR*.
So for example, a constant that might once have been referred to
in a C++ example as *upm::MMA7660::AUTOSLEEP_64*, would now be
referenced as *MMA7660_AUTOSLEEP_64*.
This holds true for most, if not all drivers that have been ported
to C. Not all of these changes are listed in this file due to the
sheer number of them.
If you run into problems with constants that were working
previously, and now cannot be found, this is likely the reason.
Check the driver documentation and the source code to see what the
new name is.
In C, constants are now usually implemented in a separate header
file named *drivername_defs.h* or *drivername_regs.h*, for easier
integration into the SWIG languages, and shared use between C++ and
C implementations.
* **bmpx8x** This driver has been rewritten from scratch in C, with a
C++ wrapper.
All exported symbols have been renamed for consistency and to
avoid symbol collisions by having a *BMPX8X_* prefix. As an example,
*ADDR* has been renamed to *BMPX8X_DEFAULT_I2C_ADDR*. Most C
ported drivers follow this rule.
The *getPressureRaw()* and *getTemperatureRaw()* functions have
been removed. This functionality was only needed internally to
the driver.
The constructor no longer accepts a mode argument. Only the I2C
bus and I2C address are accepted. By default, the device will be
configured for it's maximum resolution *BMPX8X_OSS_ULTRAHIGHRES*,
the previous default. You can use the new method
*setOversampling()* to change the mode to something else if
desired.
The methods related to calibration, like *computeB5()* are no
longer exposed.
New methods, *init()* and *reset()* have been added. *reset()*
resets the device to a freshly powered up state. *init()* can be
used to re-initialize the device after a reset (reload calibration
data) and set a default oversampling mode.
A new method, *update()* has been added. This method will update
all internal state from the device, and **must** be called before
querying the pressure, temperature, sea level and altitude values.
The *getSeaLevelPressure()* method has been split into two
overloaded methods. One which **requires** an argument in meters
(previously, a default was provided), and another which does not
accept arguments at all and computes the sea level pressure based
on current altitude.
The *i2cReadReg_16()*, *i2CWriteReg()* and *i2cReadReg_8()* have
been replaced with *readReg()*, *readRegs()*, and *writeReg()*, in
line with other I2C/SPI drivers of this type. They are marked
protected (in C++) now as well. Please see the updated
documentation and examples for this driver.
* **mma7660** This driver has been rewritten in C. Some exported
symbols have been changed, for example, *MMA7660_I2C_BUS* was renamed
to *MMA7660_DEFAULT_I2C_BUS*.
See updated documentation and examples for other changes.
* **bmx055, bmi055, bmc150, bma250e, bmg160, bmm150** This driver has
been split up. The *bma250e*, *bmg160*, *bmm150* drivers have been
rewritten in C (with C++ wrappers) and now reside in their own
libraries. The versions of these drivers that used to be present in
*bmx055* have been removed, and *bmx055* now uses the new libraries
for it's functionality. The other two composite devices, *bmi055*,
and *bmc150* are still contained within the *bmx055* library, and
also use the new libraries for their functionality.
In addition, for all of these drivers some private methods are no
longer exposed (such as the compensation routines).
The C++ driver methods that once returned pointers to a floating
point array now return *std::vectors* of the appropriate type.
The SWIG language examples for these drivers have been modified to
use these methods instead of the C pointer based SWIG methods
previously used.
* **sainsmartks** This driver has been renamed to *lcdks* (LCD Keypad
Shield) and moved into it's own library. It uses the *lcm1602*
library to do most of it's work. In addition, an additional argument
was added to the constructor to optionally allow specifying a GPIO
pin to be used to control the backlight. This driver supports the
SainsmartKS and DFRobot LCD Keypad Shields. Similar devices from
other manufacturers should also work with this driver.
* **lcm1602/jhd1313m1** These drivers had been rewritten in C, with
C++ wrappers and placed into their own libraries in the previous
version of UPM, however, the original C++ implementation was kept in
the lcd library for compatibility reasons with existing code.
To avoid collisions with the header files, the new *lcm1602* and
*jhd1313m1* drivers had their C++ headers renamed to use a **.hxx**
suffix.
In this version of UPM, the *lcm1602* and *jhd1313m1* drivers have
been removed from the lcd library. In addition, the header
files for the new implementation have been renamed from their
**.hxx** suffix to the normal **.hpp** suffix.
A change was also made to the new *lcm1602* and *jhd1313m1* C++
drivers. The *createChar()* function now accepts a byte vector
*std::vector<uint8_t>* rather than the *char ** pointer that was
used previously. This should make it easier to use with the SWIG
language bindings (Python, JavaScript, and especially Java).
* **bmp280/bme280** Some private methods are no longer exposed (such
as the calibration and compensation routines). In addition,
the *getHumidity()* method no longer accepts an argument representing
pressure at sea level. A separate method is provided to set this now.
* **bno055** This module no longer uses std::strings to pass around
binary data (*read/writeCalibrationData()*). Rather, now *std::vectors* of
the appropriate type are used. In addition, methods that previously
returned certain data in the form of an array, like *getEulerAngles()*,
now return a *std::vector* instead. This simplifies the Python,
JavaScript, and Java bindings considerably, and leads to more
"natural" looking Python/JavaScript/Java code. For JavaScript, Java,
and Python, the examples have been modified to use these methods
rather than the methods that return data in argument pointers or
arrays.
* **lpd8806** The constructor for this driver was updated to allow specifying
a SPI bus number. This is now the first parameter, the number of LEDs on the
strip is now the last (3rd) parameter instead.
* **max31723** The constructor for this driver was updated to allow specifying
a SPI bus number. This is now the first parameter, CS pin second.
* **tcs3414cs** The constructor for this can now accept an I2C bus and
address.
# v1.1.0 and prior
* **i2clcd/jhd1313m1/lcm1602** LCD devices supported by the i2clcd module are
being separated into individual libraries. The APIs will be preserved, but
we recommend changing your code to use the new libraries as they become
available. Once this transition is complete, the i2clcd module will be
deprecated. So far, the following libraries have been made available
separately: jhd1313m1, lcm1602.
* **nunchuck** This driver no longer supports the init() function.
All initialization is now done in the C nunchuck_init() function,
or the C++ constructor. In addition, the *NUNCHUCK_I2C_ADDR*
define is no longer exposed, as it is not possible to use any other
I2C address than *0x52*. The readBytes() and writeByte() functions
are also no longer exposed, since aside from what the driver does
to initialize and read data, there are no other options available.
* **enc03r** This driver no longer supports the value() function. In
addition, an update() function has been added. This function must be
called prior to calling angularVelocity(). angularVelocity() no
longer accepts an argument. Additional functions have been added,
however they do not affect compatibility with previous versions.
* **ds18b20** The C++ interface init() function has been deprecated.
It is still present, but currently does nothing. It will be removed
in a future release.
* **grove<name>** Starting with UPM 1.0 the Grove libraries have been renamed
from *upm-grove<name>* to simply *upm-<name>*. Class names also match this new
format, with old classes marked as deprecated throughout the documentation.
List of affected libraries: grovecollision, groveehr, groveeldriver,
groveelectromagnet, groveemg, grovegprs, grovegsr, grovelinefinder, grovemd,
grovemoisture, groveo2, grovescam, grovespeaker, groveultrasonic, grovevdiv,
grovewater, grovewfs.
* **grove** As of UPM 1.0 the Grove classes for sensors in the starter kit are
being separated into individual libraries. The old classes will be deprecated
over time and eventually removed. Corresponding libraries have the grove
prefix removed. Affected classes are GroveButton, GroveLed, GroveLight,
GroveRelay, GroveRotary, GroveSlide and GroveTemp.
* The **ublox6** driver has been replaced with a generic implementation called
nmea_gps as of UPM 1.0. This driver should handle all generic serial GPS
devices that output NMEA data going forward. This new driver has been tested
with ublox6, DFRobot VK2828U7 (ublox7) and ublox LEA-6H GPS devices.
* **grove** Binary compatibility was broken for the GroveTemp class as of UPM
v0.7.3. C++ code using this class has to be recompiled.
* There were frequent misspellings of the word *Celsius* in the UPM
code. In some cases, these were in method names, which will cause
some API compatibility issues. These have all been corrected for UPM
versions after v.0.7.2.
* Our **C++ header files** changed their extension from *.h* to *.hpp* in
version 0.7.0, Intel provided examples and code samples also reflect this
change but you will need to modify your `#include` directives in existing code
change but you will need to modify your `#include` directives in existing
code.
* **my9221**, **groveledbar** and **grovecircularled** are now all part of the
same library (my9221) and new functionality was added going to v.0.5.1
* **stepmotor** driver API was changed significantly from v.0.4.1 to v.0.5.0
same library (my9221) and new functionality was added going to v.0.5.1.
* **stepmotor** driver API was changed significantly from v.0.4.1 to v.0.5.0.
* **eboled** library was greatly improved in version 0.4.0 and the `draw()`
function was removed in favor of a more complete GFX library implementation
function was removed in favor of a more complete GFX library implementation.

View File

@ -5,10 +5,21 @@ UPM uses cmake in order to make compilation relatively painless. Cmake runs
build out of tree so the recommended way is to clone from git and make a build/
directory.
**Dependencies**
* basic: libmraa, cmake, swig, pkgconfig, pthreads, librt
* bindings: python-dev, nodejs-dev, openjdk
* documentation: doxygen, graphviz, sphinx, yuidoc
* sensor specific: bacnet-mstp, modbus, openzwave, jpeg
This project depends on libmraa, so that needs to be installed first. Append
the install location of mraa pkgconfig to the following environment variable:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:.../mraa/build/lib/pkgconfig
~~~~~~~~~~~~~
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:.../mraa/build/lib/pkgconfig
~~~~~~~~~~~~~
If you are building the Java or Node.js bindings make sure you set the
`JAVA_HOME` and `NODE_PATH` environment variables respectively.
UPM will attempt to build all directories inside src/ and they must contain
individual CMakeLists.txt files.
@ -23,7 +34,12 @@ make install
The last command will create the include/ and lib/ directories with a copy of
the headers and library objects respectively in your build location. Note that
doing an out-of-source build may cause issues when rebuilding later on.
doing an out-of-source build may cause issues when rebuilding later on. In many
cases you'll need elevated permissions to install:
~~~~~~~~~~~~~{.sh}
sudo make install
~~~~~~~~~~~~~
Our cmake configure has a number of options, *cmake-gui* or *ccmake* can show
you all the options. The interesting ones are detailed below:
@ -45,6 +61,10 @@ Cross-compiling on a different system:
-DCMAKE_CXX_FLAGS:STRING=-m32 -march=i586
-DCMAKE_C_FLAGS:STRING=-m32 -march=i586
~~~~~~~~~~~~~
Enabling Java module building
~~~~~~~~~~~~~
-DBUILDSWIGJAVA=ON
~~~~~~~~~~~~~
Building with an older version of swig (swig 2.0+) requires the disabling of javascript:
~~~~~~~~~~~~~
-DBUILDSWIGNODE=OFF
@ -57,51 +77,54 @@ Setting the python library to use:
~~~~~~~~~~~~~
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/libpython2.7.so.1.0
~~~~~~~~~~~~~
Building doxygen doc
Building documentation
~~~~~~~~~~~~~
-DBUILDDOC=ON
~~~~~~~~~~~~~
Build C++ example binaries
Build C/C++/JAVA examples
~~~~~~~~~~~~~
-DBUILDEXAMPLES=ON
~~~~~~~~~~~~~
If you intend to turn on all the options and build everything at once (C++,
Node, Python and Documentation) you will have to edit the src/doxy2swig.py file
and change the line endings from Windows style to Linux format. This has to be
repeated every time to sync with the master branch since our Github repository
stores files using CR LF line breaks.
If you intend to turn on all the options and build everything at once
(C++, Java, Node, Python and Documentation) you will have to edit the
src/doxy2swig.py file and change the line endings from Windows style to Linux
format. This has to be repeated every time to sync with the master branch since
our Github repository stores files using CR LF line breaks.
You can also generate the include and lib directories containing all the sensor
headers and library files respectively with *make install*. Further, you may
choose to generate these only for a specific sensor you modified, and this can
be achieved by building from the individual makefile of the sensor. Assuming
you're in the build directory, to make the lcd module you would:
you're in the build directory, to build/install the lcd module you would:
~~~~~~~~~~~~~
cd src/lcd
make install
~~~~~~~~~~~~~
Note: 'make install' under src/lcd will build all targets (and dependencies)
for the lcd but will NOT install dependencies.
Often developers are only interested in building one module or even just the
python/node module to do some quick testing using scripting. In order to do
this you need to use the target name for the python or node module you want to
rebuild. For example the lcd module target name is i2clcd. Therefore the python
module target name will be prefixed by _pyupm_. Just do the following to build
only that module. Modules not using the UPM cmake macros may have different
naming.
rebuild. For example, the lcd module target will have a python2 target prefixed
by _pyupm_ (_pyupm_lcd-python2). Modules not using the UPM cmake macros may
have different naming. To build the python2 lcd module (and all dependencies),
use the following make target:
~~~~~~~~~~~~~
make _pyupm_i2clcd
make _pyupm_lcd-python2
~~~~~~~~~~~~~
Sometimes you want to build a small C++ example against an installed library.
This is fairly easy if installed system-wide. Just link against the correct
library (in this case libupm-i2clcd) and then add /usr/include/upm to the
library (in this case libupm-lcd) and then add /usr/include/upm to the
loader path:
~~~~~~~~~~~~
g++ test.cxx -lupm-i2clcd -I/usr/include/upm
g++ test.cxx -lupm-lcd -I/usr/include/upm
~~~~~~~~~~~~
You can also use pkg-config to return the information to you, which is
@ -109,5 +132,131 @@ considered the correct way if including UPM in a build system like cmake or
autotools on linux.
~~~~~~~~~~~
pkg-config --cflags --libs upm-i2clcd
pkg-config --cflags --libs upm-lcd
~~~~~~~~~~~
## Building for Android Things
Requirements:
* [io.mraa.at](https://search.maven.org/#artifactdetails%7Cio.mraa.at%7Cmraa%7C1.8.0%7Caar)
* [io.mraa.at.upm](https://search.maven.org/#artifactdetails%7Cio.mraa.at.upm%7Cupm_zfm20%7C1.3.0%7Caar)
* [Android NDK](https://developer.android.com/ndk/downloads/index.html) >= 14b
### Android NDK r14b
~~~~~~~~~~~~~{.sh}
NDK_HOME="/path/to/android-ndk-r14b"
MRAA_INSTALL_DIR="/path/to/mraa/install"
cmake -DBUILDSWIG=ON \
-DBUILDSWIGPYTHON=OFF \
-DBUILDSWIGNODE=OFF \
-DBUILDSWIGJAVA=ON \
-DANDROID_COMPILER_FLAGS_CXX='-std=c++11' \
-DANDROID_PIE=1 \
-DANDROID_PLATFORM=android-24 \
-DANDROID_STL_FORCE_FEATURES=ON \
-DANDROID_STL=c++_shared \
-DANDROID_TOOLCHAIN_NAME=x86-i686 \
-DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \
-DCMAKE_FIND_ROOT_PATH=$MRAA_INSTALL_DIR \
..
~~~~~~~~~~~~~
## Building with Docker
You can use `docker` and `docker-compose` to generate a complete build environment
for upm without having to install any other tool.
Requirements:
* [docker](https://www.docker.com/get-docker) >= 1.12.6
* [docker-compose](https://docs.docker.com/compose/install/) >= 1.9.0
**NOTE:** docker-compose is an optional requirement. It actually make running complex
docker build and run command easier. But you can just use docker to build and run.
### Using Docker Images to build Upm
**tl;dr:** Just use this commands to build upm:
```sh
# Build upm documentation
$ docker-compose run doc
# Build upm python2 and python3 packages and run python tests
$ docker-compose run python
# Build upm java package and run java tests
$ docker-compose run java
# Build upm node4 package and run node tests
$ docker-compose run node4
# Build upm node5 package and run node tests
$ docker-compose run node5
# Build upm node6 package and run node tests
$ docker-compose run node6
# Build upm for android things package
$ docker-compose run android
```
**docker-compose** will take a look at the `docker-compose.yaml` file in the repository
root directory, and run an specific command to build upm for the requested target.
Once the build is completed, you will have a `build/` folder in the repository root with all
the compiled code. This `build/` folder is created by using a docker volume. The `build\`
folder contents is reused each time you execute `docker-compose run [TARGET]`.
To know more about volumes in Docker, visit the [Docker Volume Documentation](https://docs.docker.com/engine/tutorials/dockervolumes/).
You can also start an interactive session inside the docker container if you need to run some
custom build commands:
```sh
# Start an interactive bash shell inside the container
$ docker-compose run python bash
# From now, all the commands are executed inside the container
$ cd build && cmake -DBUILDSWIGPYTHON=ON .. && make clean all
```
If you don't want to use docker-compose, you can also use `docker run` to build upm.
For example, to build upm for python, you can do:
```sh
# From the repository root folder
$ docker run \
--volume=$(pwd):/usr/src/app \
--env BUILDSWIGPYTHON=ON \
--env BUILDSWIGJAVA=OFF \
--env BUILDSWIGNODE=OFF \
inteliotdevkit/upm-python \
bash -c "./scripts/run-cmake.sh && make -Cbuild"
```
### Proxy considerations
If, for some reason, you are behind a proxy, find below a list of common problems related
to proxy settings:
**docker cannot pull images from docker.io**
Visit [this link](https://docs.docker.com/engine/admin/systemd/#httphttps-proxy)
to configure docker daemon behind a proxy.
**docker run fails to access the internet**
docker-compose will automatically take `http_proxy`, `https_proxy`, and `no_proxy`
environment variables and use it as build arguments. Be sure to properly configure
this variables before building.
docker, unlinke docker-compose, do not take the proxy settings from the environment
automatically. You need to send them as environment arguments:
```sh
# From the repository root folder
$ docker run \
--volume=$(pwd):/usr/src/app \
--env BUILDSWIG=ON \
--env BUILDSWIGPYTHON=ON \
--env BUILDSWIGJAVA=OFF \
--env BUILDSWIGNODE=OFF \
--env http_proxy=$http_proxy \
--env https_proxy=$https_proxy \
--env no_proxy=$no_proxy \
inteliotdevkit/upm-python \
bash -c "./scripts/run-cmake.sh && make -Cbuild"
```

View File

@ -4,6 +4,146 @@ Changelog {#changelog}
Here's a list summarizing some of the key undergoing changes to our library
from earlier versions:
### v2.0.0
* Reworked existing interfaces and extended the list to include iAcceleration,
iAngle, iButton, iClock, iCollision, iDistance, iDistanceInterrupter, iEC,
iElectromagnet, iEmg, iGas, iGps, iGyroscope, iHallEffect, iHeartRate, iHumidity,
iLight, iLineFinder, iMagnetometer, iMoisture, iMotion, iOrp, iPH, iPressure,
iProximity, iTemperature, iVDiv, iWater
* Provided overloaded string based constructors for a good number of sensors,
allowing initialization from external frameworks without type knowledge
* Removed deprecated basic grove classes from project
* Replaced 6 unsafe occurrences of sprintf() usage
* Cleaned-up build system around target arch detection and cpack usage, added
detection and resolution of tinyb library when used as a dependency
* New sensors: 2jciebu01_ble, 2jciebu01_usb
### v1.7.1
* Bumped library compatibility to new MRAA 2.0 APIs
* Added installation details for Fedora
* Minor fixes based on static analysis vulnerability report
### v1.7.0
* Added Cordova bindings based on Java packages
* Complete rework of the nmea_gps library giving more control over data
acquisition and parsing
* Added GTest support for unit tests
* Removed calls to deprecated MRAA fast GPIO functions
* Several bug fixes and improvements around SWIG type maps and gcc8 support
* New sensors: kx122, kxtj3, bh1792, bh1749
### v1.6.0
* Extended LED library to support the new MRAA gpio-leds APIs
* Many CMake changes around SWIG wrapper generation and improved FindNodejs
detection module
* Several code fixes based on static code analysis
* Improved documentation generation and Travis CI builds
* Cleaned-up doxygen tags in headers and class names in JSON library files
* New sensor: lis3dh
### v1.5.0
* Introduced a flexible JSON format for technical sensor specifications, notes
and classification. This is also used by our [new UPM website](http://upm.mraa.io)
* Revised all C++ sensor examples and switched to stack allocations where
possible along with other code and formatting clean-up
* Significantly improved docker workflow, CI integration, sanity and
consistency tests, static code scans and documentation generation
* Several improvements to a couple of existing sensor drivers and better
compatibility with subplatforms
* Added new std::vector to AbstractList<> typemap for Java bindings and
examples
* New sensors: lis2ds12, lsm6ds3h, lsm6dsl, lidarlitev3
### v1.3.0
* Finalized all required build system and JAVA binding changes to release the
UPM libraries for Android Things targets
* Enhanced the modules for lsm303 and tmp006 to support newer variants of the
chips
* Fixed Node.js detection on Ubuntu when installed with apt using official
packages
* Minor documentation changes
* New sensors: lsm303agr, lsm303d, veml6070, tca9548a, rn2903
### v1.2.0
* Improved JAVA binding compiler compatibility and added JAVA interfaces that
match existing C++ interfaces
* Ported Bosch drivers to C thus now they can be used on supported MCUs
* Completely redesigned C/C++ example handling by cmake to avoid maintaining
a list by hand
* Fixed several existing drivers, mostly based on static code analysis reports
* Added a sensor driver template plus bash script that can be easily used by
developers to start writing their own sensor driver
* Numerous documentation improvements
* New sensors: p9813, abp, rsc, mmc35240, tcs37727, tmp006, mma8x6x, mag3110,
hdc1000
### v1.1.0
* Reworked cmake handling of internal and external dependencies
* Documentation improvements for sensor names, sensor descriptions, external
contributor guides and added new section on installing UPM on a supported OS
* Fixed issues with C11 builds on some WRLinux gateways and Debian systems
* New examples and functionality for speaker and ads1x15 modules
* Modified JAVA builds to ensure the SWIG generated wrappers include all
functionality and typemaps
* New sensors: mcp2515, max30100, uartat, le910
### v1.0.2
* Minor cmake changes for Java builds and Java examples are now toggled with
the same BUILDEXAMPLES cmake switch
* Made some improvements in the utilities class for our C drivers
* Fixed issue with some drivers not being usable on subplatforms due to pin
numbers using uint8 type
* New sensors: ims, ecezo, mb704x, rf22
### v1.0.1
* Warnings as errors enabled for C/CXX (fixed warnings from -Wall and others)
* Fix for C/CXX compile flag append issue #485
* C sensor libraries for: my9221, otp538u, guvas12d, ppd42ns
* New sensor: ms5803
### v1.0.0
* Added approximately 50 C sources for UPM drivers that can be used on both
Unix and RTOS boards
* Provided generic alternatives to the Grove set of classes as they will be
deprecated over time and eventually removed
* UPM modules are now being packed and published on NPM as sources rather than
binaries to enhance compatibility with various boards and systems
* Build both python2 and python3 modules if the corresponding python libs are
available and removed cmake BUILDPYTHON3 switch
* Converted python examples to run on both python2 and python3
* Added 'upm' hierarchy to python module install path which changes the way
UPM modules are imported
Example:
old: import pyupm_dfrph
new: from upm import pyupm_dfrph
or
import upm.pyupm_dfrph
* Added ctests for consistancy checking UPM repo as well as sanity checking
for python2/3 modules and examples
* Various documentation and driver fixes throughout
* New sensors: nmea_gps, mma7361, bh1750, hka5, dfrorp, dfrec, sht1x
### v0.8.0
* Extended l3gd20 driver to support I2C connections in addition to IIO
* Updated ads1x15, mcp9808 and ssd1306 I2C drivers to not throw a fatal
exception if they fail to set a different I2C speed
* Added extra functionality to apa102 driver, backlight control to jhd1313m1
LCDs and fixed htu21d
* Improved documentation with build dependencies, refreshed the list of known
limitations and simplified the component name for a few sensors
### v0.7.3
* Fixed several existing drivers and updated Grove Temperature sensor to use

View File

@ -1,22 +1,13 @@
Contributing a module {#contributions}
=====================
Here are the rules of contribution:
- Your new module must have an example that builds against your UPM library.
- Each commit must have a sign-off line by everyone who authored or reviewed
them.
- Commits must be named `<file/module>: Some decent description`.
- You must license your module under a FOSS license. The recommended license
is MIT but any permissive license is fine. Please consider that people using
UPM may want to write proprietary programs with your sensors so we like to
avoid GPL. If your license is not MIT please include a LICENSE file in
src/mymodule/.
In order to contribute to the project:
- The top of each source file must contain a comment block containing the
license information.
- Please test your module builds before contributing and make sure it works on
the latest version of libmraa. If you tested on a specific board/platform
please tell us what this was in your PR.
- Try not to break master. In any commit.
- Commits must be named `<file/module>: Some decent description`.
- Each commit must have a sign-off line by everyone who authored or reviewed
them.
- Your new module must have an example that builds against your UPM library.
- Attempt to have some decent API documentation as described in the the @ref
documentation [guide](documentation.md).
@ -27,70 +18,87 @@ the UPM repository. Below is the comment block needed at the top each source
file:
/*
* The MIT License (MIT)
*
* Author: <your full name>
* Copyright (c) <year> <copyright holder>
*
* Author: <contributing author full name - if applicable>
* Copyright (c) <year> <copyright holder>
*
* 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:
* This program and the accompanying materials are made available under the
* terms of the MIT License which is available at https://opensource.org/licenses/MIT.
*
* 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.
* SPDX-License-Identifier: MIT
*/
Code signing
Eclipse Contributor Agreement
============
The sign-off is a simple line at the end of the explanation for the
patch, which certifies that you wrote it or otherwise have the right to pass it
on as an open-source patch. The rules are pretty simple: if you can certify
the below:
Your contribution cannot be accepted unless you have a signed [ECA - Eclipse Foundation Contributor Agreement](http://www.eclipse.org/legal/ECA.php) in place.
Developer's Certificate of Origin 1.1
Here is the checklist for contributions to be considered _acceptable_:
By making a contribution to this project, I certify that:
1. [Create an account at Eclipse](https://dev.eclipse.org/site_login/createaccount.php).
2. Add your GitHub user name in your account settings.
3. [Log into the project's portal](https://projects.eclipse.org/) and sign the ["Eclipse ECA"](https://projects.eclipse.org/user/sign/cla).
4. Ensure that you [_sign-off_](https://wiki.eclipse.org/Development_Resources/Contributing_via_Git#Signing_off_on_a_commit) your Git commits.
5. Ensure that you use the _same_ email address as your Eclipse account in commits.
6. Include the appropriate copyright notice and license at the top of each file.
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
Your signing of the ECA will be verified by a webservice called 'ip-validation'
that checks the email address that signed-off on your commits has signed the
ECA. **Note**: This service is case-sensitive, so ensure the email that signed
the ECA and that signed-off on your commits is the same, down to the case.
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
Creating a new sensor library using the sensortemplate
=======================================
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
A stubbed-out sensor library is available which can be leveraged to get
up-and-running quickly when writing a new sensor library. Use the shell
commands below to generate collateral files for your new sensor library.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
then you just add a line to each of your commits with `--signoff` saying
```shell
#!/bin/bash
Signed-off-by: Random J Developer <random@developer.example.org>
function make_new_sensor {
export SensorName=$1
# Get a lowercase version of the string
export sensorname=${SensorName,,}
using your real name (sorry, no pseudonyms or anonymous contributions.)
Unsigned commits will not be accepted.
# Make sure this is run from the root UPM directory
if ! grep -q 'UPM ' README.md; then echo "Please run from the root UPM directory"; return -1; fi
printf "Generating new sensor: ${SensorName}\n"
# Copy sensortemplate files to ${sensorname}
find docs/ examples/ src/ -name '*sensortemplate*' -exec bash -c 'cp -r $0 ${0/sensortemplate/${sensorname}}' {} \;
# Copy SensorTemplate files to ${SensorName}
find examples/ src/ -name '*SensorTemplate*' -exec bash -c 'cp -r $0 ${0/SensorTemplate/${SensorName}}' {} \;
# Rename sernsortemplate src files
rename "s/sensortemplate/${sensorname}/" src/${sensorname}/*
# Search/replace the new files, replacing all instances of sensortemplate
perl -p -i -e "s/SensorTemplate/${SensorName}/g" src/${sensorname}/* examples/*/*${sensorname}* examples/*/*${SensorName}*
perl -p -i -e "s/sensortemplate/${sensorname}/g" src/${sensorname}/* examples/*/*${sensorname}* examples/*/*${SensorName}*
# Remove objects starting with "//" from the new library descriptor .json file
perl -p -i -e 'BEGIN{undef $/;} s/\s+"\/\/.*?},//smg' src/${sensorname}/${sensorname}.json
# Add mynewmodule example target for java
perl -p -i -e "s/^((.*)SensorTemplateSample sensortemplate(.*))/\1\n\2${SensorName}Sample ${sensorname}\3/g" examples/java/CMakeLists.txt
# Add mynewmodule example mappings for doxygen
perl -p -i -e "s/^(.*SensorTemplateSample.*)$/\1\n${sensorname}.cxx\t${SensorName}Sample.java\t${sensorname}.js\t${sensorname}.py/g" doxy/samples.mapping.txt
# Display TODO's
printf "Generation complete for sensor library: ${SensorName}\n"
printf "TODO's:\n"
printf "\t1. Update src/hdr files: src/${sensorname}/${sensorname}.hpp src/${sensorname}/${sensorname}.cxx\n"
printf "\t\tChange the Author\n"
printf "\t\tChange the Copyright\n"
printf "\t\tUpdate all doxygen tags (follow directions for @tags)\n"
printf "\t2. Update examples: examples/*/${sensorname}.* examples/java/*${SensorName}*.java\n"
printf "\t3. Overwrite docs/images/${sensorname}.png with a valid image of your sensor\n"
}
# Call make_new_sensor with your new sensor name, example: 'MyNewSensor1234'
make_new_sensor MyNewSensor1234
```
Once all files have been created, they can be used as a starting-point for your
new library. They will need additional customization (your name/email address,
documentation, sensor images, etc).

View File

@ -12,25 +12,25 @@ Creating Java Bindings Guide
* [Implementing callbacks in Java](#implementing-callbacks-in-java)
##Overview
## Overview
The "Creating Java Bindings Guide" serves as a basic tutorial for using the SWIG software development tool to create 'glue code' required for Java to call into C/C++ code. It contains: guides for dealing with type conversions, exception handling, callbacks; recommendations on how to write/modify the native API to avoid issues on the Java side, and also workarounds for those issues that can't be avoided.
This guide was created with the [upm](https://github.com/intel-iot-devkit/upm/) and [mraa](https://github.com/intel-iot-devkit/mraa) libraries in mind, and uses examples taken from these sources, but its usage can be extended to any project of creating Java bindings for C/C++ libraries.
##Tools of trade
## Tools of trade
[SWIG General Documentation](http://www.swig.org/Doc3.0/SWIGDocumentation.html)
[SWIG Java-specific Documentation](http://www.swig.org/Doc3.0/Java.html)
##Recommendations for the native API
## Recommendations for the native API
###Pointers
### Pointers
As much as possible, avoid passing values/returning values through pointers given as as arguments to methods. As the Java language does not have pointers, SWIG provides a [workaround](http://www.swig.org/Doc3.0/Java.html#Java_tips_techniques) in the typemaps.i library.
####Alternatives:
#### Alternatives:
1. Functions that read data from a driver, return it through a pointer given as argument, and return a bool value, should be __replaced by__ functions that return the value directly and throw a std::runtime_error if a read error occurs. E.g.:
```c++
/*
@ -67,7 +67,6 @@ As much as possible, avoid passing values/returning values through pointers give
```
3. Functions that return N values through pointers, that do not make sense to grouped together (e.g. a general purpose function that returns both the light intensity and air pollution), should be __replaced by__ N functions (one for each value) that read only one specific value. E.g.:
```c++
/*
* Function returns the light intensity and air pollution
@ -82,7 +81,6 @@ As much as possible, avoid passing values/returning values through pointers give
```
4. Functions that return N values through pointers; values that do not make sense to be grouped together, but are time dependent, and make sense to be read at the same time. For example, a sensor that reads air humidity and temperature. A user may want to know the temperature value _temp_ read at the exact moment the humidity value _humid_ was read. These should be __replaced by__ N+1 functions: a _getData()_ function that reads all values at the same time and stores them in global variables; and N getter functions, one for each value. E.g.
```c++
/*
* Function returns the light intensity and air pollution
@ -103,8 +101,8 @@ __Notice:__
Sometimes, you may be required to write JNI code. Be aware of the difference between the C JNI calling syntax and the C++ JNI calling syntax.The C++ calling syntax will not compile as C and also vice versa. It is however possible to write JNI calls which will compile under both C and C++ and is covered in the [Typemaps for both C and C++ compilation](http://www.swig.org/Doc3.0/Java.html#Java_typemaps_for_c_and_cpp) section of the SWIG Documentation.
###Throwing Exceptions in Java
####Language independent:
### Throwing Exceptions in Java
#### Language independent:
The %exception directive allows you to define a general purpose exception handler. For example, you can specify the following:
```c++
@ -155,7 +153,7 @@ The upm_exception.i interface file is included in the upm.i file, therefor SWIG
* std::exception
####Java specific:
#### Java specific:
To throw a specific Java exception:
```c++
@ -196,12 +194,12 @@ In the upm library, the java_exceptions.i library file provides the functionalit
void function throws IOException ();
```
##Caveats & Challenges
## Caveats & Challenges
###Wrapping C arrays with Java arrays
### Wrapping C arrays with Java arrays
SWIG can wrap arrays in a more natural Java manner than the default by using the arrays_java.i library file. Just include this file into your SWIG interface file.
###Wrapping unbound C arrays with Java arrays if array is output
### Wrapping unbound C arrays with Java arrays if array is output
Functions that return arrays, return a pointer to that array. E.g.:
```c++
@ -229,7 +227,7 @@ __SWIG:__
}
```
###Wrapping unbound C arrays with Java arrays if array is input
### Wrapping unbound C arrays with Java arrays if array is input
In C, arrays are tipically passed as pointers, with an integer value representig the length of the array. In Java, the length of an array is always known, so the length argument is redundant. This example shows how to wrap the C array and also get rid the length argument. E.g.:
```c++
@ -252,37 +250,26 @@ __SWIG:__
!!!! There is a difference between TYPE *name and TYPE * name in typemaps!!!!!
###Implementing callbacks in Java
### Implementing callbacks in Java
Callbacks in the UPM Java library (as well as the MRAA Java library) make use of the _void mraa\_java\_isr\_callback(void\* data\)_ method from MRAA.
__Callbacks in the UPM Java library are implemented as follows (we use the a110x Hall Effect sensors as example):__
We extend the sensor class with another method, _installISR\(jobject runnable\)_, which is a wrapper over the original _installISR\(void \(\*isr\)\(void \*\), void \*arg\)_ method. This will install the _mraa\_java\_isr\_callback\(\)_ method as the interrupt service routine \(ISR\) to be called, with _jobject runnable_ as argument.
SWIGJAVA is a symbol that is always defined by SWIG when using Java. We enclose the _installISR\(jobject runnable\)_ method in a _\#if defined(SWIGJAVA)_ check, to ensure the code only exists when creating a wrapper for Java.
Java callbacks are added at the SWIG interface level. For ease-of-use, a collection of macros are available in src/_upm.i.
src/a110x/a110x.i:
```c++
#if defined(SWIGJAVA)
void A110X::installISR(jobject runnable)
{
installISR(mraa_java_isr_callback, runnable);
}
#endif
JAVA_ADD_INSTALLISR(upm::A110X)
```
We hide the underlying method, _installISR\(void \(\*isr\)\(void \*\), void \*arg\)_ , and expose only the _installISR\(jobject runnable\)_ to SWIG, through the use of the SWIGJAVA symbol. When SWIGJAVA is defined, we change the access modifier of the underlying method to private.
Will expand to the following SWIG wrapper code:
```c++
public:
#if defined(SWIGJAVA)
void installISR(jobject runnable);
#else
void installISR(void (*isr)(void *), void *arg);
#endif
private:
#if defined(SWIGJAVA)
void installISR(void (*isr)(void *), void *arg);
#endif
SWIGINTERN void upm_A110X_installISR__SWIG_1(upm::A110X *self,jobject runnable){
self->installISR(mraa_java_isr_callback, runnable);
}
```
To use callback in java, we create a ISR class, which implements the Java Runnable interface, and we override the _run\(\)_ method with the code to be executed when the interrupt is received. An example for the a110x Hall sensor that increments a counter each time an interrupt is received:
@ -313,41 +300,3 @@ class A110XISR implements Runnable {
}
}
```
####Issues with java callbacks and workarounds
__SWIGJAVA not defined at compile time__
Consider the following files:
* example.h - Header file for our source file
* example.cxx - Source file containing the class Example, for which we build java bindings
* example.i - The SWIG interface, that includes the example.h header file
The build process of a java module using SWIG is split into two steps:
1. Generating the intermediate files, from the SWIG interface file. This will produce the java class file (Example.java), the JNI file (exampleJNI.java) and wrapper file (example_wrap.cxx). The source file (example.cxx) is not needed in the first step.
```
swig -c++ -java example.i
```
2. Generating the shared library from the C++ sources and wrapper file
```
g++ -fPIC -c example.cxx example_wrap.cxx -I/usr/lib/jvm/java-1.8.0/include -I/usr/lib/jvm/java-1.8.0/include/linux
g++ -shared example_wrap.o sensor.o -o libexample.so
```
SWIGJAVA is always defined when SWIG parses the interface file, meaning it will be defined when it parses the header file (example.h) that is included in the interface file (example.i).
SWIG also adds the "#define SWIGJAVA" directive in the wrapper file (example_wrap.cxx).
However, in generating the shared library the SWIGJAVA symbol is only defined in the example_wrap.cxx file, because of the added "#define SWIGJAVA" directive. But we have also used the "#if defined(SWIGJAVA)" check in the source file (example.cxx), and thus need to define SWIGJAVA for it too. If we define the SWIGJAVA symbol as a compile flag, when compiling the source code to object code, the SWIGJAVA compile flag and #define SWIGJAVA" directive will clash and give a double definition warning (only a warning).
In this example it is simple to compile the two source codes separately, one with the compile flag, the other without, and then create the shared library (libexample.so).
But in a big automatic build like the java upm libraries, this may prove too hard or too complicated to do. A workaround to this would be to define a custom symbol (e.q. JAVACALLBACK in the upm library) and also test for it. In short, replace:
```c++
#if defined(SWIGJAVA)
```
by
```c++
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
```

View File

@ -10,92 +10,132 @@ sensors that you want to add to UPM:
- Have the specific sensor manufacturer/model & version that you used, if you
support multiple versions please list.
- Simple comments do not need full stops.
- Stick to <80 chars per line even in comments.
- Stick to <80 chars per line where possible.
- No text is allowed on the same line as the start or end of a comment /** */.
####The sensor block
We currently document our libraries in the following way:
This is added just before the class declaration in your header(.h) file and has
mandatory fields. For single sensor libraries, this block will actually
follow immediately after the library block. If you have multiple physical
sensors, add this to every one.
Here's an example (disregard the "@verbatim" tags in your actual code):
* **Doxygen** is used for documenting the API and generating the categories on
the [UPM Libraries page](https://iotdk.intel.com/docs/master/upm/modules.html).
You can learn more about the Doxygen syntax [here](http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html).
* **JSON** is used to provide sensor specifications, descriptions, supported
platforms, links and other details.
```
@verbatim
/**
* @library <lib-name>
* @sensor <chip-id>
* @comname <component-name>
* @altname <alt-name>
* @altid <alt-id>
* @type <component-category>
* @man <component-manufacturer>
* @web <component-weblinks>
* @con <connection-type>
* @kit <component-kit>
*
* @brief Short class/sensor description
*
* Then add a longer
* description here.
*
* @image html <component-img.jpeg>
* @snippet <example-name.cxx> Interesting
*/
@endverbatim
When submitting a new driver, you will have to at least fill out the mandatory
fields as described below.
### The library JSON file
Let's use the BME280 class snippet from the bmp280.json file as an example:
```json
{
"Library": "bmp280",
"Description": "Bosch Atmospheric Sensor Library",
"Sensor Class":
{
"BME280":
{
"Name": "Digital Humidity, Pressure, and Temperature Sensor",
"Description": "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",
"Aliases": ["bme280", "Grove - Barometer Sensor(BME280)"],
"Categories": ["pressure", "humidity", "temperature"],
"Connections": ["gpio", "i2c", "spi"],
"Project Type": ["prototyping", "industrial"],
"Manufacturers": ["adafruit", "seeed", "bosch"],
"Examples":
{
"Java": ["BMP280_Example.java"],
"Python": ["bmp280.py"],
"Node.js": ["bmp280.js"],
"C++": ["bmp280.cxx"],
"C": ["bmp280.c"]
},
"Specifications":
{
"Vdd": {"unit": "v", "low" : 1.7, "high": 3.6},
"Ioff" : {"unit": "mA", "low" : 0.0, "high": 0.0},
"Iavg": {"unit": "mA", "low" : 1, "high": 2},
"Pressure Range": {"unit": "hpA", "low" : 300, "high": 1100},
"Temperature Range": {"unit": "C", "low" : -40, "high": 85}
},
"Platforms":
{
"Intel Joule Module":
{
"Notes": ["Requires pull-up resistors with carrier board"]
}
},
"Urls" :
{
"Product Pages": ["https://www.adafruit.com/products/2652"],
"Datasheets": ["https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf"],
"Schematics": ["https://learn.adafruit.com/assets/26693"]
}
}
}
}
```
- `<lib-name>` When adding to an existing library this needs to match that
library's "@defgroup", otherwise this is a new library name, generally the
same as chip id. *Mandatory*
- `<chip-id>` Usually the chip number used by the sensor. When this is not
available or relevant, use a unique descriptor that makes sense. Must match
class name. *Mandatory*
- `<component-name>` A short name for your sensor, try to avoid including the
manufacturer's name here. *Mandatory*
- `<alt-name>` Alternative names that your sensor driver might have. This may
include manufacturer's name. *Optional*
- `<alt-id>` Alternative chip-ids that your sensor driver supports. *Optional*
- `<component-category>` Mention one or more categories the sensor fits in. Can
be 'other'. *Mandatory*
- `<component-manufacturer>` Sensor manufacturer. Can be 'generic'. *Mandatory*
- `<component-weblinks>` Links to vendors or data-sheets. *Optional*
- `<connection-type>` Specifies how does the sensor connect to the board
*Mandatory*
- `<component-kit>` Specifies if the sensor is part of a kit. *Optional*
#### Mandatory fields:
Existing groups that can be used for the manufacturer, connection, category and
kit tags are found in the src/upm.h file.
For the library:
Optionally, a small representative image can be placed in the "docs/images"
subfolder and linked with the "@image" tag.
**Please do not use existing, copyrighted images with your sensors!**
- `Library` The name of the library. This is appended to the upm prefix during
a build.
- `Description` A short description of the library and what it contains.
The example should have an 'Interesting' section which will be highlighted as
a code sample in doxygen. Everything in between such tags will show up in the
class documentation when "@snippet" is added at the end of a class docstring.
Tags use this format (in "example-name.cxx"):
For the sensor classes:
```
@verbatim
//! [Interesting]
- `Sensor Class` This is the object containing the sensor class(es) within the
library. Class objects need to match the name used in code.
- `Name` Title Case descriptive names for your sensor. Multiple values can be
used to capture the chip name, generic name, or specific name for a vendor.
Examples: Digital Pressure Sensor, Serial MP3 Module
- `Description` A more detailed explanation what the sensor does and how it
works.
- `Categories` Mention one or more categories the sensor fits in. Accepted
values are listed in the groups.md file.
- `Connections` Specifies how does the sensor connect to the board. Accepted
values are listed in the groups.md file.
- `Project Type` What time of projects is the sensor suited for. For example:
prototyping, industrial, commercial.
- `Manufacturers` List of sensor manufacturers or vendors. Can be 'generic',
other accepted values in groups.md.
- `Examples` Names of the example files provided with the library. At a minimum,
the `C++` example needs to be provided.
- `Urls` At least one link for `Product Pages` needs to be provided. Additional
links to `Datasheets` or `Schematics` can be added.
...example code here...
#### Optional and customizable fields
//! [Interesting]
@endverbatim
```
- `Kits` Specifies if the sensor is part of a kit. Accepted values are listed
in the groups.md file.
- `Image` Name of the image file provided with the sensor class.
- `Specifications` Relevant sensor specifications as listed in the datasheet.
- `Platforms` Platform specific notes or known limitations and workarounds.
For more examples take a look at the existing headers in our github repository.
As mentioned, accepted values for some of the fields are listed under the
[groups.md](../src/groups.md) file. If needed, you can add new categories
for your sensor library following the existing format.
####The library block
JSON files are automatically checked for correctness and required fields on
code submissions.
**Please do not use copyrighted images with your sensors!**
Images from Seeed, DFRobot, Sparkfun or Adafruit are permitted.
### Doxygen tags
#### The library doxygen block
New libraries must have the "@brief", "@defgroup" and "@ingroup" tags in one
block. This usually follows the namespace and it is common to have one sensor
per library.
You should end up with something like this:
You should end up with something like this (disregard the "@verbatim" tags in
your actual code):
```
@verbatim
@ -110,8 +150,43 @@ You should end up with something like this:
@endverbatim
```
In "@defgroup" use the same `<lib-name>` used in the sensor block. Multiple
sensors can be added to the same library this way.
Use `<lib-name>` to name the library.
For "@ingroup" add the same values as in the sensor block for manufacturer,
category, connection type and kit. If you have multiple classes or sensors
per library, only use the "@ingroup" tags that are common for all of them.
Existing groups that can be used for the manufacturer, connection, category and
kit tags are found in the *src/groups.md* file.
#### The sensor doxygen block
This is added just before the class declaration in your header(.hpp) file and has
one mandatory field. For single sensor libraries, this block will actually follow
immediately after the library block. If you have multiple sensor classes, add
this to every one.
Here's an example:
```
@verbatim
/**
* @library <lib-name>
* @brief Short class/sensor description
*
* Then add a longer
* description here.
*/
@endverbatim
```
When adding to an existing library, `<lib-name>` needs to match that library's
"@defgroup".
For more examples take a look at the existing headers in our github repository.
Also, make sure to check our [sensortemplate](contributions.md#creating-a-new-sensor-library-using-the-sensortemplate)
as it can facilitate new sensor additions.
Existing header files might have additional fields under the sensor block. These
have been used in the past to generate sensor pages outside of doxygen, but they
are now deprecated and not required for new additions.

348
docs/guidelines.md Normal file
View File

@ -0,0 +1,348 @@
# Code Commenting And Documentation Authoring Guidelines
#### [Part I. Code Commenting](#code-commenting)
[Grammar](#grammar)
- [Active vs passive voice](#voice)
- [Capitalization](#capitalization)
- [No possessive case](#possessive-case)
- [Present tense](#present-tense)
- [Second person vs the user / reader / programmer / engineer](#second-person)
- [Third person vs infinitive](#third-person)
[Punctuation](#punctuation)
- [Comma in enumerations](#comma)
- [No period at the end of description](#period)
[Specific word usage](#word-usage)
- [Abbreviations and acronyms](#abbr-acr)
- [Adjectives containing numbers](#adj-num)
- [App vs application](#app)
- [Function vs method](#func-meth)
- [Onboard vs on-board](#onboard)
- [Sensor name vs sensor model](#name-model)
- [Setup vs set up](#setup)
- [Wi-Fi vs WiFi / Wifi / Wi-fi / wifi / wi-fi](#setup)
[Trademarks](#trademarks)
- [Intel products](#intel-prod)
- [Third-party technology](#third-party)
- [Trademark + noun](#tm-noun)
#### [Part II. Documentation Authoring](#doc-authoring)
[Grammar](#da-grammar)
- [Capitalization](#da-capitalization)
[Styling](#da-styling)
- [Bolding](#da-bolding)
- [Backticks](#da-backticks)
- [Links](#da-links)
- [Numbered list vs bullet points](#da-lists)
[Specific word usage](#da-word-usage)
- [Login vs log in](#da-login)
- [Click](#da-click)
- [SSH](#da-ssh)
# <a name="code-commenting"></a>Code Commenting Guidelines
## <a name="grammar"></a>Grammar
### <a name="voice"></a>Active vs passive voice
Where possible, prefer active voice over passive.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| It can be put into the configuration mode by grounding the CONFIG pin on the transceiver. | - You can put it into the configuration mode by grounding the CONFIG pin on the transceiver.<br>- To put it into the configuration mode, ground the CONFIG pin on the transceiver.<br>- Put it into the configuration mode by grounding the CONFIG pin on the transceiver. |
### <a name="capitalization"></a>Capitalization
- Capitalize the first word in the description of an entity.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| checks to see if there is data available for reading | Checks to see if there is data available for reading |
| @param len length of the buffer | @param len Length of the buffer |
- Be consistent with the capitalization of boolean values.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Returns True on success, false otherwise | - Returns true on success, false otherwise<br>- Returns True on success, False otherwise |
### <a name="possessive-case"></a>No possessive case
Do not use possessive case to avoid unnecessary personalization.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| method's output | - method output<br>- output of the method |
### <a name="present-tense"></a>Present tense
Use the present simple tense instead of future, past, or present perfect.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| When specified, this value will be used in computing the voltage. | When specified, this value is used in computing the voltage. |
| Once the data has been read… | Once the data is read… |
### <a name="second-person"></a>Second person vs the user / reader / programmer / engineer
Use second person when addressing the target reader of your comment.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| The user can easily override this method. | You can easily override this method. |
### <a name="third-person"></a>Third person vs infinitive
Use third-person verb forms in short descriptions of classes, methods, functions, etc., not infinitive.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Get the proximity value from the sensor | Gets the proximity value from the sensor |
## <a name="punctuation"></a>Punctuation
### <a name="comma"></a>Comma in enumerations
Add an extra comma before the last item in a list joined by **and** / **or**.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Returns raw values for the X, Y and Z axes. | Returns raw values for the X, Y, and Z axes. |
### <a name="period"></a>No period at the end of description
Do not put a period if the description of an entity is one sentence long.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Returns the name of the sensor. | Returns the name of the sensor |
| Sets the frequency modulation<br>Valid values are between 10 and 160 (in kHz) | Sets the frequency modulation. Valid values are between 10 and 160 (in kHz). |
| @param millis Maximum time in milliseconds to wait for the input<br>-1 means waiting forever (default) | @param millis Maximum time in milliseconds to wait for the input. -1 means waiting forever (default). |
<font color="purple">**Exception:**</font> if the description contains more than one sentence, put periods after each sentence.
## <a name="word-usage"></a>Specific word usage
### <a name="abbr-acr"></a>Abbreviations and acronyms
- Spell out the first occurrence or the first prominent use of an abbreviation or acronym, followed by a shortened form.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| @brief API for the GP2Y0A family of IR Proximity Sensors | @brief API for the GP2Y0A family of infrared (IR) Proximity Sensors |
- Do not use Latin abbreviations.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Works best with halved values; e.g., 1.0, 0.5, 0.25, etc. | Works best with halved values; for example, 1.0, 0.5, 0.25, and so on. |
- Know exactly what the abbreviation or acronym means to avoid unnecessary duplication.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| - LCD display<br>- ISR routine | - LCD / liquid-crystal display<br>- ISR / interrupt service routine |
### <a name="adj-num"></a>Adjectives containing numbers
Adjectives of the form **number + noun / participle** should be hyphenated. It does not matter if a number is represented by one or more digits or spelled out.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| - 4 wire stepper motor<br>- 3 axis gyroscope<br>- zero based indexing<br>- one byte register | - 4-wire stepper motor<br>- 3-axis gyroscope<br>- zero-based indexing<br>- one-byte register |
### <a name="app"></a>App vs application
Use **app** when referring to a program running on a device, and **application** when referring to a program running on a desktop / laptop computer.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| The wiki page for this device includes a link to an Android\* application that can be used to read the device via NFC. | The wiki page for this device includes a link to an Android\* app that can be used to read the device via NFC. |
### <a name="func-meth"></a>Function vs method
If a function is associated with a class, use **method** instead.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| class WheelEncoder {<br>...<br>/**<br>* Starts the counter. This function also clears<br>* the current count and resets the clock.<br>*/<br>void startCounter(); | class WheelEncoder {<br>...<br>/**<br>* Starts the counter. This method also clears<br>* the current count and resets the clock.<br>*/<br>void startCounter(); |
### <a name="onboard"></a>Onboard vs on-board
Use **onboard**.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| This ADC features an on-board reference and oscillator. | This ADC features an onboard reference and oscillator. |
### <a name="name-model"></a>Sensor name vs sensor model
Use a sensor name alone or a sensor model followed by a sensor name, not a sensor model alone.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| ADXL345 is compatible with… | - The ADXL345 3-axis digital accelerometer is compatible with…<br>- The accelerometer is compatible with… |
<font color="purple">**Exception:**</font> you can use a sensor model alone when introducing a
sensor for the first time:
ADXL345 is a 3-axis digital accelerometer…
### <a name="setup"></a>Setup vs set up
**Setup** is a noun, **set up** is a verb.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| It does not require any additional set up. | It does not require any additional setup. |
| For instructions on how to setup…, refer to... | For instructions on how to set up…, refer to... |
### <a name="wi-fi"></a>Wi-Fi vs WiFi / Wifi / Wi-fi / wifi / wi-fi
Use **Wi-Fi**.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| It was tested with the XBee\* S6B WiFi module. | It is tested with the XBee\* S6B Wi-Fi\* module. |
## <a name="trademarks"></a>Trademarks
### <a name="intel-prod"></a>Intel products
Use the correct official names of Intel products. When in doubt, check the TM names database.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| It is a 64x48 pixel OLED display that connects directly to an edison via its 80-pin connector. | It is a 64x48 pixel OLED display that connects directly to an Intel(R) Edison board via its 80-pin connector. |
**Note:** if an Intel product has a legally approved short name, you may use it in subsequent instances, after spelling it out the first time.
### <a name="third-party"></a>Third-party technology
Add an asterisk (\*) after a name to indicate a third-party trademark or registered intellectual property. If you are not sure whether an asterisk is necessary after a particular name, the rule of thumb is to put one, to be on the safe side.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| The Grove MQ2 Gas Sensor module is useful for gas leakage detection. | The Grove\* MQ2 Gas Sensor module is useful for gas leakage detection. |
### <a name="tm-noun"></a>Trademark + noun
Always follow trademarks by an appropriate noun. For a list of approved nouns for a particular trademark, check the TM names database.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| It is a 64x48 pixel OLED display that connects directly to an Intel(R) Edison via its 80-pin connector. | It is a 64x48 pixel OLED display that connects directly to an Intel(R) Edison board via its 80-pin connector. |
# <a name="doc-authoring"></a>Documentation Authoring Guidelines
## <a name="da-grammar"></a>Grammar
### <a name="da-capitalization"></a>Capitalization
For titles, use sentence capitalization.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Add a New Device | Add a new device |
## <a name="da-styling"></a>Styling
### <a name="da-bolding"></a>Bolding
For GUI elements and file names, use bolding instead of quotes.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| In the “Environment Variables” window, click “OK”. | In the **Environment Variables** window, click **OK**. |
| Copy the “example.zip” archive into the installation directory. | Copy the **example.zip** archive into the installation directory. |
### <a name="da-backticks"></a>Backticks
Enclose program commands, code blocks, and file paths in backticks (\`).
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| To create a new device, use the **create-thing** command. | To create a new device, use the \`create-thing\` (rendered as `create-thing`) command. |
| Go to **C:\Users\me\Documents\GitHub\intel-iot-examples-mqtt\support\aws**. | Go to \`C:\Users\me\Documents\GitHub\intel-iot-examples-mqtt\support\aws\` (rendered as `C:\Users\me\Documents\GitHub\intel-iot-examples-mqtt\support\aws`). |
### <a name="da-links"></a>Links
Do not use embedded links to third-party websites.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Create an account on [Microsoft Azure](https://azure.microsoft.com/en-us), if you do not yet have one. | Create an account on [https://azure.microsoft.com/en-us](https://azure.microsoft.com/en-us), if you do not yet have one. |
### <a name="da-lists"></a>Numbered list vs bullet points
- For a logical sequence of steps, use a numbered list.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| When running your C++ code on the Edison, you need to set the MQTT parameters in Eclipse. Go to "Run configurations", and change the "Commands to execute before application" to the following:<br><br>Click on the "Apply" button to save these settings.<br>Click on the "Run" button to run the code on the Edison. | When running your C++ code on the Intel® Edison board, you need to set the MQTT\* client parameters in Eclipse\*. To do that:<br>1. Go to **Run configurations** and, in the **Commands to execute before application** field, type the following:<br><br>2. Click the **Apply** button to save these settings.<br>3. Click the **Run** button to run the code on your board. |
- For a list of equally important options, use a bulleted list.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| From this exercise, developers will learn how to:<br>1. Connect the Intel® Edison board...<br>2. Run these code samples in the Intel® System Studio IoT Edition...<br>3. Set up a web application server... | From this exercise, developers will learn how to:<br>- Connect the Intel® Edison board…<br>- Run these code samples in the Intel® System Studio IoT Edition…<br>- Set up a web application server… |
## <a name="da-word-usage"></a>Specific word usage
### <a name="da-login"></a>Login vs log in
**Login** is a noun, **log in** is a verb.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Provide your log in and password. | Provide your login and password. |
| Login to your account. | Log in( )to your account. |
### <a name="da-click"></a>Click
Omit **on** after **click**.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| Click on **Advanced system settings**. | Click **Advanced system settings**. |
### <a name="da-ssh"></a>SSH
Do not use SSH as a verb. It is considered slang and is to be avoided.
| <font color="red">**Incorrect**</font> | <font color="green">**Correct**</font> |
| --- | --- |
| SSH into your Intel® Edison board. | Establish an SSH connection to your Intel® Edison board. |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/icons/iss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/icons/upm_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

BIN
docs/images/1wire.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -1,361 +0,0 @@
Creative Commons Legal Code
Attribution-NonCommercial-ShareAlike 3.0 Unported
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
DAMAGES RESULTING FROM ITS USE.
License
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
CONDITIONS.
1. Definitions
a. "Adaptation" means a work based upon the Work, or upon the Work and
other pre-existing works, such as a translation, adaptation,
derivative work, arrangement of music or other alterations of a
literary or artistic work, or phonogram or performance and includes
cinematographic adaptations or any other form in which the Work may be
recast, transformed, or adapted including in any form recognizably
derived from the original, except that a work that constitutes a
Collection will not be considered an Adaptation for the purpose of
this License. For the avoidance of doubt, where the Work is a musical
work, performance or phonogram, the synchronization of the Work in
timed-relation with a moving image ("synching") will be considered an
Adaptation for the purpose of this License.
b. "Collection" means a collection of literary or artistic works, such as
encyclopedias and anthologies, or performances, phonograms or
broadcasts, or other works or subject matter other than works listed
in Section 1(g) below, which, by reason of the selection and
arrangement of their contents, constitute intellectual creations, in
which the Work is included in its entirety in unmodified form along
with one or more other contributions, each constituting separate and
independent works in themselves, which together are assembled into a
collective whole. A work that constitutes a Collection will not be
considered an Adaptation (as defined above) for the purposes of this
License.
c. "Distribute" means to make available to the public the original and
copies of the Work or Adaptation, as appropriate, through sale or
other transfer of ownership.
d. "License Elements" means the following high-level license attributes
as selected by Licensor and indicated in the title of this License:
Attribution, Noncommercial, ShareAlike.
e. "Licensor" means the individual, individuals, entity or entities that
offer(s) the Work under the terms of this License.
f. "Original Author" means, in the case of a literary or artistic work,
the individual, individuals, entity or entities who created the Work
or if no individual or entity can be identified, the publisher; and in
addition (i) in the case of a performance the actors, singers,
musicians, dancers, and other persons who act, sing, deliver, declaim,
play in, interpret or otherwise perform literary or artistic works or
expressions of folklore; (ii) in the case of a phonogram the producer
being the person or legal entity who first fixes the sounds of a
performance or other sounds; and, (iii) in the case of broadcasts, the
organization that transmits the broadcast.
g. "Work" means the literary and/or artistic work offered under the terms
of this License including without limitation any production in the
literary, scientific and artistic domain, whatever may be the mode or
form of its expression including digital form, such as a book,
pamphlet and other writing; a lecture, address, sermon or other work
of the same nature; a dramatic or dramatico-musical work; a
choreographic work or entertainment in dumb show; a musical
composition with or without words; a cinematographic work to which are
assimilated works expressed by a process analogous to cinematography;
a work of drawing, painting, architecture, sculpture, engraving or
lithography; a photographic work to which are assimilated works
expressed by a process analogous to photography; a work of applied
art; an illustration, map, plan, sketch or three-dimensional work
relative to geography, topography, architecture or science; a
performance; a broadcast; a phonogram; a compilation of data to the
extent it is protected as a copyrightable work; or a work performed by
a variety or circus performer to the extent it is not otherwise
considered a literary or artistic work.
h. "You" means an individual or entity exercising rights under this
License who has not previously violated the terms of this License with
respect to the Work, or who has received express permission from the
Licensor to exercise rights under this License despite a previous
violation.
i. "Publicly Perform" means to perform public recitations of the Work and
to communicate to the public those public recitations, by any means or
process, including by wire or wireless means or public digital
performances; to make available to the public Works in such a way that
members of the public may access these Works from a place and at a
place individually chosen by them; to perform the Work to the public
by any means or process and the communication to the public of the
performances of the Work, including by public digital performance; to
broadcast and rebroadcast the Work by any means including signs,
sounds or images.
j. "Reproduce" means to make copies of the Work by any means including
without limitation by sound or visual recordings and the right of
fixation and reproducing fixations of the Work, including storage of a
protected performance or phonogram in digital form or other electronic
medium.
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
limit, or restrict any uses free from copyright or rights arising from
limitations or exceptions that are provided for in connection with the
copyright protection under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License,
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
perpetual (for the duration of the applicable copyright) license to
exercise the rights in the Work as stated below:
a. to Reproduce the Work, to incorporate the Work into one or more
Collections, and to Reproduce the Work as incorporated in the
Collections;
b. to create and Reproduce Adaptations provided that any such Adaptation,
including any translation in any medium, takes reasonable steps to
clearly label, demarcate or otherwise identify that changes were made
to the original Work. For example, a translation could be marked "The
original work was translated from English to Spanish," or a
modification could indicate "The original work has been modified.";
c. to Distribute and Publicly Perform the Work including as incorporated
in Collections; and,
d. to Distribute and Publicly Perform Adaptations.
The above rights may be exercised in all media and formats whether now
known or hereafter devised. The above rights include the right to make
such modifications as are technically necessary to exercise the rights in
other media and formats. Subject to Section 8(f), all rights not expressly
granted by Licensor are hereby reserved, including but not limited to the
rights described in Section 4(e).
4. Restrictions. The license granted in Section 3 above is expressly made
subject to and limited by the following restrictions:
a. You may Distribute or Publicly Perform the Work only under the terms
of this License. You must include a copy of, or the Uniform Resource
Identifier (URI) for, this License with every copy of the Work You
Distribute or Publicly Perform. You may not offer or impose any terms
on the Work that restrict the terms of this License or the ability of
the recipient of the Work to exercise the rights granted to that
recipient under the terms of the License. You may not sublicense the
Work. You must keep intact all notices that refer to this License and
to the disclaimer of warranties with every copy of the Work You
Distribute or Publicly Perform. When You Distribute or Publicly
Perform the Work, You may not impose any effective technological
measures on the Work that restrict the ability of a recipient of the
Work from You to exercise the rights granted to that recipient under
the terms of the License. This Section 4(a) applies to the Work as
incorporated in a Collection, but this does not require the Collection
apart from the Work itself to be made subject to the terms of this
License. If You create a Collection, upon notice from any Licensor You
must, to the extent practicable, remove from the Collection any credit
as required by Section 4(d), as requested. If You create an
Adaptation, upon notice from any Licensor You must, to the extent
practicable, remove from the Adaptation any credit as required by
Section 4(d), as requested.
b. You may Distribute or Publicly Perform an Adaptation only under: (i)
the terms of this License; (ii) a later version of this License with
the same License Elements as this License; (iii) a Creative Commons
jurisdiction license (either this or a later license version) that
contains the same License Elements as this License (e.g.,
Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License").
You must include a copy of, or the URI, for Applicable License with
every copy of each Adaptation You Distribute or Publicly Perform. You
may not offer or impose any terms on the Adaptation that restrict the
terms of the Applicable License or the ability of the recipient of the
Adaptation to exercise the rights granted to that recipient under the
terms of the Applicable License. You must keep intact all notices that
refer to the Applicable License and to the disclaimer of warranties
with every copy of the Work as included in the Adaptation You
Distribute or Publicly Perform. When You Distribute or Publicly
Perform the Adaptation, You may not impose any effective technological
measures on the Adaptation that restrict the ability of a recipient of
the Adaptation from You to exercise the rights granted to that
recipient under the terms of the Applicable License. This Section 4(b)
applies to the Adaptation as incorporated in a Collection, but this
does not require the Collection apart from the Adaptation itself to be
made subject to the terms of the Applicable License.
c. You may not exercise any of the rights granted to You in Section 3
above in any manner that is primarily intended for or directed toward
commercial advantage or private monetary compensation. The exchange of
the Work for other copyrighted works by means of digital file-sharing
or otherwise shall not be considered to be intended for or directed
toward commercial advantage or private monetary compensation, provided
there is no payment of any monetary compensation in con-nection with
the exchange of copyrighted works.
d. If You Distribute, or Publicly Perform the Work or any Adaptations or
Collections, You must, unless a request has been made pursuant to
Section 4(a), keep intact all copyright notices for the Work and
provide, reasonable to the medium or means You are utilizing: (i) the
name of the Original Author (or pseudonym, if applicable) if supplied,
and/or if the Original Author and/or Licensor designate another party
or parties (e.g., a sponsor institute, publishing entity, journal) for
attribution ("Attribution Parties") in Licensor's copyright notice,
terms of service or by other reasonable means, the name of such party
or parties; (ii) the title of the Work if supplied; (iii) to the
extent reasonably practicable, the URI, if any, that Licensor
specifies to be associated with the Work, unless such URI does not
refer to the copyright notice or licensing information for the Work;
and, (iv) consistent with Section 3(b), in the case of an Adaptation,
a credit identifying the use of the Work in the Adaptation (e.g.,
"French translation of the Work by Original Author," or "Screenplay
based on original Work by Original Author"). The credit required by
this Section 4(d) may be implemented in any reasonable manner;
provided, however, that in the case of a Adaptation or Collection, at
a minimum such credit will appear, if a credit for all contributing
authors of the Adaptation or Collection appears, then as part of these
credits and in a manner at least as prominent as the credits for the
other contributing authors. For the avoidance of doubt, You may only
use the credit required by this Section for the purpose of attribution
in the manner set out above and, by exercising Your rights under this
License, You may not implicitly or explicitly assert or imply any
connection with, sponsorship or endorsement by the Original Author,
Licensor and/or Attribution Parties, as appropriate, of You or Your
use of the Work, without the separate, express prior written
permission of the Original Author, Licensor and/or Attribution
Parties.
e. For the avoidance of doubt:
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme cannot be waived, the Licensor
reserves the exclusive right to collect such royalties for any
exercise by You of the rights granted under this License;
ii. Waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme can be waived, the Licensor reserves
the exclusive right to collect such royalties for any exercise by
You of the rights granted under this License if Your exercise of
such rights is for a purpose or use which is otherwise than
noncommercial as permitted under Section 4(c) and otherwise waives
the right to collect royalties through any statutory or compulsory
licensing scheme; and,
iii. Voluntary License Schemes. The Licensor reserves the right to
collect royalties, whether individually or, in the event that the
Licensor is a member of a collecting society that administers
voluntary licensing schemes, via that society, from any exercise
by You of the rights granted under this License that is for a
purpose or use which is otherwise than noncommercial as permitted
under Section 4(c).
f. Except as otherwise agreed in writing by the Licensor or as may be
otherwise permitted by applicable law, if You Reproduce, Distribute or
Publicly Perform the Work either by itself or as part of any
Adaptations or Collections, You must not distort, mutilate, modify or
take other derogatory action in relation to the Work which would be
prejudicial to the Original Author's honor or reputation. Licensor
agrees that in those jurisdictions (e.g. Japan), in which any exercise
of the right granted in Section 3(b) of this License (the right to
make Adaptations) would be deemed to be a distortion, mutilation,
modification or other derogatory action prejudicial to the Original
Author's honor and reputation, the Licensor will waive or not assert,
as appropriate, this Section, to the fullest extent permitted by the
applicable national law, to enable You to reasonably exercise Your
right under Section 3(b) of this License (right to make Adaptations)
but not otherwise.
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE
FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS
AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE
WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT
LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED
WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
a. This License and the rights granted hereunder will terminate
automatically upon any breach by You of the terms of this License.
Individuals or entities who have received Adaptations or Collections
from You under this License, however, will not have their licenses
terminated provided such individuals or entities remain in full
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
survive any termination of this License.
b. Subject to the above terms and conditions, the license granted here is
perpetual (for the duration of the applicable copyright in the Work).
Notwithstanding the above, Licensor reserves the right to release the
Work under different license terms or to stop distributing the Work at
any time; provided, however that any such election will not serve to
withdraw this License (or any other license that has been, or is
required to be, granted under the terms of this License), and this
License will continue in full force and effect unless terminated as
stated above.
8. Miscellaneous
a. Each time You Distribute or Publicly Perform the Work or a Collection,
the Licensor offers to the recipient a license to the Work on the same
terms and conditions as the license granted to You under this License.
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
offers to the recipient a license to the original Work on the same
terms and conditions as the license granted to You under this License.
c. If any provision of this License is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this License, and without further action
by the parties to this agreement, such provision shall be reformed to
the minimum extent necessary to make such provision valid and
enforceable.
d. No term or provision of this License shall be deemed waived and no
breach consented to unless such waiver or consent shall be in writing
and signed by the party to be charged with such waiver or consent.
e. This License constitutes the entire agreement between the parties with
respect to the Work licensed here. There are no understandings,
agreements or representations with respect to the Work not specified
here. Licensor shall not be bound by any additional provisions that
may appear in any communication from You. This License may not be
modified without the mutual written agreement of the Licensor and You.
f. The rights granted under, and the subject matter referenced, in this
License were drafted utilizing the terminology of the Berne Convention
for the Protection of Literary and Artistic Works (as amended on
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
and the Universal Copyright Convention (as revised on July 24, 1971).
These rights and subject matter take effect in the relevant
jurisdiction in which the License terms are sought to be enforced
according to the corresponding provisions of the implementation of
those treaty provisions in the applicable national law. If the
standard suite of rights granted under applicable copyright law
includes additional rights not granted under this License, such
additional rights are deemed to be included in the License; this
License is not intended to restrict the license of any rights under
applicable law.
Creative Commons Notice
Creative Commons is not a party to this License, and makes no warranty
whatsoever in connection with the Work. Creative Commons will not be
liable to You or any party on any legal theory for any damages
whatsoever, including without limitation any general, special,
incidental or consequential damages arising in connection to this
license. Notwithstanding the foregoing two (2) sentences, if Creative
Commons has expressly identified itself as the Licensor hereunder, it
shall have all rights and obligations of Licensor.
Except for the limited purpose of indicating to the public that the
Work is licensed under the CCPL, Creative Commons does not authorize
the use by either party of the trademark "Creative Commons" or any
related trademark or logo of Creative Commons without the prior
written consent of Creative Commons. Any permitted use will be in
compliance with Creative Commons' then-current trademark usage
guidelines, as may be published on its website or otherwise made
available upon request from time to time. For the avoidance of doubt,
this trademark restriction does not form part of this License.
Creative Commons may be contacted at https://creativecommons.org/.

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

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

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

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 222 KiB

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

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

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

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 173 KiB

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

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

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

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

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

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

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

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

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

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 164 KiB

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

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
docs/images/circularled.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

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

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

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

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

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

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

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

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

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

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

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

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

BIN
docs/images/es9257.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

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

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

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

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

BIN
docs/images/gprs.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

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

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

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

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

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

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

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

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

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

Before

Width:  |  Height:  |  Size: 929 KiB

After

Width:  |  Height:  |  Size: 929 KiB

BIN
docs/images/ims.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

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

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

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

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

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

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

BIN
docs/images/kxtj3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

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

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 169 KiB

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

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

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

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

BIN
docs/images/lidarlitev3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

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

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

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

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

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

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/images/max30100.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

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

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 196 KiB

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

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

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

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

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

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

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

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

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

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

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

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

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

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

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

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

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

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

BIN
docs/images/p9813.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

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

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

BIN
docs/images/rf22.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

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

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

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

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

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

Before

Width:  |  Height:  |  Size: 191 KiB

After

Width:  |  Height:  |  Size: 191 KiB

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