.. highlight:: javascript
Bridge to CPP SDK
===================
As mentioned previously, the MetaWear Javascript APIs are a wrapper around the CPP APIs.
MetaWear
---------------
Each script must include the node javascript library ``Metawear``.
::
var MetaWear = require('metawear');
The core libraries are written in C++ and many of the calls made are from the CPP library. You will find the `C++ documentation `_ and `API reference `_ useful.
The main MetaWear class in Node.JS can be found `here `_.
Node-FFI
---------------
Node-ffi is a Node.js addon for loading and calling dynamic libraries using pure JavaScript. It can be used to create bindings to native libraries without writing any C++ code. The library has been partially abandoned so MbientLab is hosting a custom copy `here `_.
Node ffi is use along with the bindings file so that Node API calls can call the CPP SDK.
Bindings
---------------
The `bindings file `_ is the glue between the Javascript APIs and the CPP library.
In the bindings file: ::
/**
* Stop sensor fusion
* @param board Calling object
*/
'mbl_mw_sensor_fusion_stop': [ref.types.void, [ref.refType(MetaWearBoard)]],
In the CPP library: ::
/**
* Stop sensor fusion
* @param board Calling object
*/
METAWEAR_API void mbl_mw_sensor_fusion_stop(const MblMwMetaWearBoard* board);
Can be called in Node.JS: ::
var MetaWear = require('metawear');
MetaWear.mbl_mw_sensor_fusion_stop(device.board);