2016-04-05 17:02:31 -07:00
|
|
|
API Changes {#apichanges}
|
|
|
|
===============
|
|
|
|
|
|
|
|
Here's a list of other API changes made to the library that break source/binary
|
|
|
|
compatibility between releases:
|
|
|
|
|
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 12:43:44 -07:00
|
|
|
# current master
|
|
|
|
|
2017-03-16 12:12:01 -06:00
|
|
|
* **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. Similiar 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/i2clcd 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/i2clcd 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).
|
|
|
|
|
2017-03-10 09:57:09 -07:00
|
|
|
* **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: 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 12:43:44 -07:00
|
|
|
* **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
|
2017-03-16 12:12:01 -06:00
|
|
|
arrays.
|
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 12:43:44 -07:00
|
|
|
|
|
|
|
# v1.1.0
|
|
|
|
|
2017-02-13 16:09:44 -08:00
|
|
|
* **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.
|
|
|
|
|
2017-01-31 13:06:26 -07:00
|
|
|
* **nunchuck** This driver no longer supports the init() function.
|
2017-02-13 16:09:44 -08:00
|
|
|
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.
|
2017-01-31 13:06:26 -07:00
|
|
|
|
2017-01-27 17:58:35 -07:00
|
|
|
* **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.
|
|
|
|
|
2017-01-18 13:09:51 -07:00
|
|
|
* **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.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-10-27 16:46:35 -07:00
|
|
|
* **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.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-10-26 17:58:41 -07:00
|
|
|
* **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.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-10-27 16:46:35 -07:00
|
|
|
* 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.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-10-26 17:58:41 -07:00
|
|
|
* **grove** Binary compatibility was broken for the GroveTemp class as of UPM
|
2016-10-27 16:46:35 -07:00
|
|
|
v0.7.3. C++ code using this class has to be recompiled.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-07-12 16:50:39 -06:00
|
|
|
* 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.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-05-12 17:07:29 -07:00
|
|
|
* 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
|
2016-10-27 16:46:35 -07:00
|
|
|
change but you will need to modify your `#include` directives in existing
|
|
|
|
code.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-04-05 17:02:31 -07:00
|
|
|
* **my9221**, **groveledbar** and **grovecircularled** are now all part of the
|
2016-10-27 16:46:35 -07:00
|
|
|
same library (my9221) and new functionality was added going to v.0.5.1.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-10-27 16:46:35 -07:00
|
|
|
* **stepmotor** driver API was changed significantly from v.0.4.1 to v.0.5.0.
|
2017-01-27 17:58:35 -07:00
|
|
|
|
2016-04-05 17:02:31 -07:00
|
|
|
* **eboled** library was greatly improved in version 0.4.0 and the `draw()`
|
2016-10-27 16:46:35 -07:00
|
|
|
function was removed in favor of a more complete GFX library implementation.
|