Document MT0605P.E
© Xsens Technologies B.V.
MTi User Manual
14
2.6.4
Direct low-level communication with MTi
The MTi features a powerful embedded multi-processor core. Since the MTi has an on-board non-
volatile memory that can store all settings, the MTi can conveniently be used without using a host
computer.
The low-level communication protocol (named XBus protocol) offers full control and functionality,
however without the convenience advantages that the Xsens Device API offers, such as threading,
object-oriented programming and error handling. Low-level communication is essential on platforms
that do not support the Xsens Device API, such as custom embedded computers.
The low-level communication is extensively described in the Low-Level Communication Protocol
Documentation. Next to that, source code is delivered to make driver development and Xbus message
parsing for the MTi as easy and quick as possible.
2.6.5
Migration from MT SDK 3.3 (CMT)
Programmers familiar with using the CMT interface from the MT SDK 3.x and lower (Xsens’ interface
for legacy MTi products) will find that changes need to be made in order to work with the new XDA.
Notable differences are shown below:
MT SDK 3.3 / CMT 3.3
MT SDK 4 / XDA 4.x
Xsens CMT (Communication for
Motion Trackers) library
XDA (Xsens Device API) library
Mixed C/C++ interface
Pure C interface with C++ wrapper interface. The C interface
supplies the same functionality as the C++ interface but uses
the class name as a function prefix (ie XsControl_openPort
instead of XsControl::openPort)
Preallocation of buffers is often
required
XDA-managed safe interface objects are passed between the
library and the application
Library functions are plain functions
using an instance number and
DeviceID for device identification
Library functions and structures are available as C++ classes
without the need for explicit identification per function
Only supports MT9-C and Xbus
Master devices
Supports all Xsens devices
Data output in fixed-rate all-in-one
format
Data output rates configurable per type of output. Also many
more output types are available.
All functions are prefixed with cmt
All structs are prefixed with Cmt
All global functions and objects are prefixed with Xs.
Source code is available including
logging and custom functions
Source code is limited to a message interface. However,
fewer messages are required to configure MTis and data
messages are easier to understand so the message interface
is more robust.
Linux functions in source code only
A shared object for Linux on x86 processors is available (beta)
XDA can be run side-by-
side with CMT, but the libraries don’t interact. A full conversion to XDA is
recommended. The following coding steps are needed: replace all Cmt objects in the code by their Xs
counterparts and replace DeviceID storage by XsDevice storage and use XsDevice class functions
instead of global CMT-functions. In section 2.6.3.1, the typical workflow of XDA is explained. Also refer
to examples, to be found in the Xsens folder in Program Files of your computer.