The version number scheme for the MIP SDK is MAJOR.MINOR.PATCH.
- The MAJOR number is incremented when breaking changes are made which are not backwards compatible. This includes public API changes and especially behavioral changes. It is likely that existing code will not work properly and/or may not compile without changes.
- The MINOR number is incremented when a new feature is added or a current feature is improved. Minor revisions may incorporate bug fixes and other patches.
- The PATCH number is incremented when a bug is fixed or a small, non-breaking change is made. Patches will not significantly affect the behavior of existing code, except where such behavior is unintentional or erroneous.
Major revisions will specify what caused the non-backwards compatible change. These will be specified like so: CHANGED - A non-backwards compatible change was made to an existing function/class. RENAMED - A function/class has been renamed. REMOVED - A function/class has been removed.
- Metadata for C++ template programming (beta)
- Pretty-printing example (beta)
- Packet processing examples
microstrain::Span
implementation ofstd::span
(interchangeable, see readme/documentation)- Improved serialization system in c++
- Reorganized directory structure and libraries
- Separated base ‘microstrain’ library from ‘mip’ library
- Separated C and C++ code
- Migration:
- #include .h files for C and .hpp files for C++.
- Add these include paths to your project:
src/c
src/cpp
- Include files as
#include <mip/mip_*.h>
or#include <microstrain/*.h>
, or .hpp for c++. - Most files have just been moved, but a few things have been broken out into new files
- Introduced microstrain namespace
- Used for common code that’s not mip-specific
- Which namespace to use depends on the location of the corresponding #include file
- Renamed some CMake variables (see readme)
- Revamped C++ serialization system to avoid huge error messages due to large number of insert/extract overloads.
- Improved CMake scripts
- Cleaned up warnings
- CV7-INS support
- GV7-INS support
- Logging capability (
mip_logging.h
) - Diagnostic counters in mip parser and mip interface for debugging (define
MIP_ENABLE_DIAGNOSTICS
) - User-defined values in CmdResult
- Additional metadata in C++ command structs
mip::PacketBuf
- implementsmip::PacketRef
and includes a data buffer- Extra helper utilities
CompositeResult
- stores a std::vector of CmdResults and associated command descriptorsIndex
- Helps prevent off-by-one errors when using 1-based MIP and 0-based arraysRecordingConnection
- Intermediate connection which logs sent/received data to files
- CMake:
WITH_SERIAL
→MIP_USE_SERIAL
WITH_TCP
→MIP_USE_TCP
- C++
mip::Packet
→mip::PacketRef
CMD_GPS_TIME_BROADCAST_NEW
→CMD_GPS_TIME_UPDATE
- C
timestamp_type
→mip_timestamp
timeout_type
→mip_timeout
renaming_count
→int
(typedef removed)packet_length
→uint_least16_t
(typedef removed)MIP_CMD_DESC_BASE_GPS_TIME_BROADCAST_NEW
→MIP_CMD_DESC_BASE_GPS_TIME_UPDATE
- The following 2 extern functions have been changed to callbacks to better support shared libraries.
Supply your callbacks to
mip_interface_init
.mip_interface_user_send_to_device
mip_interface_user_recv_from_device
- The interface for certain commands from files in
mip/definitions
have been modified:- Vectors and Quaternions are now explicitly-defined types.
- In C, these are typedef'd to arrays.
- In C++, these are simple structs offering conversion to/from plain arrays and some
other helpful features such as
fill
.
- Command/response structs (e.g.
mip::commands_base::DeviceDescriptors::Response
) now have arrays embedded rather than pointers. This change simplifies user code and reduces bugs due to dangling pointers.
- Vectors and Quaternions are now explicitly-defined types.
- The C standard in CMake has been switched to
C11
fromC99
to reflect actual usage and fix some warnings. serial_port_init
must now be called before any of the other serial port functions.
- Use
NULL
payload formip_field_from_header_ptr
if input field isn't long enough - Properly de-queue pending commands in
mip_interface_wait_for_reply
ifmip_interface_update
fails. mip_packet_cancel_last_field
now computes the new header length correctly- Serial Ports
- Serial ports now close themselves properly if an error occurs while reading from the port. This happens when the device is connected via USB and is unplugged.
- The port is now opened exclusively in Posix (Linux, Mac) systems
- The port is now closed properly if setup fails during
serial_port_open
. - Removed
handle->is_open
member to avoid it becoming out of date.
- TCP connections are now supported on Windows.
- Initial release of the MIP SDK