Skip to content
This repository was archived by the owner on Jul 20, 2025. It is now read-only.

Commit 31e1719

Browse files
committed
update examples for mms
1 parent fb8a263 commit 31e1719

25 files changed

+450
-144
lines changed

examples/acc_thresh_detect.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
var MetaWear = require('../index')//require('metawear');
1+
// LOCAL
2+
var MetaWear = require('../index')
3+
// METAWEAR
4+
//require('metawear');
5+
6+
var cbindings = require('../MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
7+
28
var ref = require('ref');
39
// Store the log event for later download. If your program needs to terminate
410
// before performing the log download, you will need to use mbl_mw_metawearboard_serialize
@@ -7,13 +13,16 @@ var ref = require('ref');
713
// to retrieve this accelLogger object
814
var thsLogger = null;
915

10-
MetaWear.discoverByAddress('f9:b5:f9:81:3f:77', function(device) {
16+
MetaWear.discoverByAddress('ea:78:c3:d3:f0:8a', function(device) {
1117
console.log('Discovered');
1218
device.connectAndSetUp(async function (error) {
1319

1420
// setup accelerometer (odr 50Hz and 2Gs)
1521
console.log('Set up acc');
16-
MetaWear.mbl_mw_acc_bmi160_set_odr(device.board, 6);
22+
// For MMRL, MMR, MMC
23+
//MetaWear.mbl_mw_acc_bmi160_set_odr(device.board, 6);
24+
// For MMS
25+
MetaWear.mbl_mw_acc_bmi270_set_odr(device.board, cbindings.AccBmi270Odr._50Hz);
1726
MetaWear.mbl_mw_acc_set_range(device.board, 1);
1827
MetaWear.mbl_mw_acc_write_acceleration_config(device.board);
1928

@@ -117,15 +126,15 @@ function downloadLog(device, callback) {
117126
MetaWear.mbl_mw_acc_disable_acceleration_sampling(device.board);
118127
MetaWear.mbl_mw_logging_stop(device.board);
119128
console.log('Setup Download');
120-
// Setup handerl for accel data points
121-
console.log(thsLogger);
129+
// Subscribe to the logger of the signal
122130
MetaWear.mbl_mw_logger_subscribe(thsLogger, ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer(function onSignal(context, dataPtr) {
123131
var data = dataPtr.deref();
124132
var pt = data.parseValue();
125133
console.log('received_entry: ' + data.epoch + ' ' + pt);
126134
}));
127135
// Setup the handlers for events during the download
128136
var downloadHandler = new MetaWear.LogDownloadHandler();
137+
// Handle download progress updates
129138
downloadHandler.received_progress_update = MetaWear.FnVoid_VoidP_UInt_UInt.toPointer(function onSignal(context, entriesLeft, totalEntries) {
130139
console.log('received_progress_update entriesLeft:' + entriesLeft + ' totalEntries:' + totalEntries);
131140
if (entriesLeft === 0) {
@@ -134,9 +143,11 @@ function downloadLog(device, callback) {
134143
callback(null);
135144
}
136145
});
146+
// Handle unknown entries
137147
downloadHandler.received_unknown_entry = MetaWear.FnVoid_VoidP_UByte_Long_UByteP_UByte.toPointer(function onSignal(context, id, epoch, data, length) {
138148
console.log('received_unknown_entry');
139149
});
150+
// Handle bad entries
140151
downloadHandler.received_unhandled_entry = MetaWear.FnVoid_VoidP_DataP.toPointer(function onSignal(context, dataPtr) {
141152
var data = dataPtr.deref();
142153
var dataPoint = data.parseValue();

examples/anonymous_datasignals.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1-
var MetaWear = require('../index')//require('metawear');
1+
// LOCAL
2+
var MetaWear = require('../index')
3+
// METAWEAR
4+
//require('metawear');
5+
6+
var cbindings = require('../MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
27
var ref = require('ref')
38

49
// MetaWear.discoverByAddress('f6:3d:13:48:ce:ab', function (device) {
510
MetaWear.discover(function (device) {
611
console.log('connecting...' + device.address);
712
device.connectAndSetUp(function (error) {
813
console.log('connected!');
14+
// Find the Anonymous signals
915
MetaWear.mbl_mw_metawearboard_create_anonymous_datasignals(device.board, ref.NULL,
1016
MetaWear.FnVoid_VoidP_MetaWearBoardP_AnonymousDataSignalP_UInt.toPointer(function (context, board, anonymousSignals, size) {
1117
if (!anonymousSignals) {
@@ -16,17 +22,22 @@ MetaWear.discover(function (device) {
1622
anonymousSignals.length = size;
1723
var i;
1824
for (i = 0; i < size; i++) {
25+
// Get signals that have been logged using the identifier api
1926
var identifier = MetaWear.mbl_mw_anonymous_datasignal_get_identifier(anonymousSignals[i]);
27+
// Subscribe to the signals we found
2028
MetaWear.mbl_mw_anonymous_datasignal_subscribe(anonymousSignals[i], ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer(function onSignal(context, dataPtr) {
2129
var data = dataPtr.deref();
2230
var pt = data.parseValue();
2331
console.log(identifier + ':' + data.epoch + ' ' + JSON.stringify(pt));
2432
}));
2533
}
34+
// Download the log
2635
download(device, function () {
2736
device.once('disconnect', function (reason) {
37+
// Exit App
2838
process.exit(0);
2939
});
40+
// Reset
3041
MetaWear.mbl_mw_macro_erase_all(device.board);
3142
MetaWear.mbl_mw_debug_reset_after_gc(device.board);
3243
MetaWear.mbl_mw_debug_disconnect(device.board);

examples/data_fuser.js

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,29 @@
1-
var MetaWear = require('../index.js')//require('metawear');
1+
// LOCAL
2+
var MetaWear = require('../index')
3+
// METAWEAR
4+
//require('metawear');
5+
6+
var cbindings = require('../MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
27
var ref = require('ref')
38

9+
// Main function
410
async function mainAsync(mac) {
11+
// Find device
512
var device = await new Promise((resolve, reject) => MetaWear.discoverByAddress(mac.toLowerCase(), d => resolve(d)))
613
await new Promise((resolve, reject) => {
14+
// Connect and setup
715
device.connectAndSetUp(error => {
816
if(error == null) resolve(null)
917
else reject(error)
1018
})
1119
})
1220

21+
// Get signals
1322
let acc = MetaWear.mbl_mw_acc_get_acceleration_data_signal(device.board)
14-
let gyro = MetaWear.mbl_mw_gyro_bmi160_get_rotation_data_signal(device.board)
23+
// For MMRL, MMC, MMR...
24+
//let gyro = MetaWear.mbl_mw_gyro_bmi160_get_rotation_data_signal(device.board)
25+
// For MMS
26+
let gyro = MetaWear.mbl_mw_gyro_bmi270_get_rotation_data_signal(device.board)
1527

1628
let fuser = await new Promise((resolve, reject) => {
1729
//ArrayType(ref.refType(AnonymousDataSignal));
@@ -38,15 +50,23 @@ async function mainAsync(mac) {
3850
console.log(`acc: (${acc.x},${acc.y},${acc.z}), gyro; (${gyro.x},${gyro.y},${gyro.z})`)
3951
}))
4052

41-
MetaWear.mbl_mw_gyro_bmi160_enable_rotation_sampling(device.board)
53+
// For MMRL, MMC, MMR...
54+
//MetaWear.mbl_mw_gyro_bmi160_enable_rotation_sampling(device.board)
55+
// For MMS
56+
MetaWear.mbl_mw_gyro_bmi270_enable_rotation_sampling(device.board)
4257
MetaWear.mbl_mw_acc_enable_acceleration_sampling(device.board)
4358

44-
MetaWear.mbl_mw_gyro_bmi160_start(device.board)
59+
// For MMRL, MMC, MMR...
60+
//MetaWear.mbl_mw_gyro_bmi160_start(device.board)
61+
// For MMS
62+
MetaWear.mbl_mw_gyro_bmi270_start(device.board)
4563
MetaWear.mbl_mw_acc_start(device.board)
4664

65+
// Reset when user enters anything in the terminal
4766
process.openStdin().addListener("data", data => {
4867
MetaWear.mbl_mw_debug_reset(device.board)
68+
process.exit(1);
4969
})
5070
}
5171

52-
mainAsync(process.argv[2])
72+
mainAsync(process.argv[2])

examples/full_reset.js

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,35 @@
1-
var MetaWear = require('../index')//require('metawear');
1+
// LOCAL
2+
var MetaWear = require('../index')
3+
// METAWEAR
4+
//require('metawear');
25

3-
MetaWear.discoverByAddress('c8:4b:aa:97:50:05', function(device) {
6+
var cbindings = require('../MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
7+
8+
// Enter the board mac adddress
9+
MetaWear.discoverByAddress('ea:78:c3:d3:f0:8a', function(device) {
410
console.log('Discovered');
511
//MetaWear.discover(function (device) {
612
device.connectAndSetUp(function (error) {
713
console.log('Connected');
8-
console.log('Stop logger and clear all entries');
14+
console.log('Stop LED');
15+
MetaWear.mbl_mw_led_stop_and_clear(device.board);
16+
console.log('Stop logger');
917
MetaWear.mbl_mw_logging_stop(device.board);
18+
console.log('Remove data processors and timers');
19+
MetaWear.mbl_mw_metawearboard_tear_down(device.board);
20+
console.log('Delete all log entries');
1021
MetaWear.mbl_mw_logging_clear_entries(device.board);
1122
console.log('Delete all macros');
1223
MetaWear.mbl_mw_macro_erase_all(device.board);
13-
console.log('Reset sensor');
24+
console.log('Reset sensor and garbage collect');
1425
MetaWear.mbl_mw_debug_reset_after_gc(device.board);
15-
device.disconnect(function (error) {
16-
console.log('Disconnected');
17-
process.exit(0);
18-
});
26+
console.log('Wait 2 seconds');
27+
setTimeout(function () {
28+
device.on('disconnect', function () {
29+
process.exit(0);
30+
});
31+
console.log('Disconnect');
32+
MetaWear.mbl_mw_debug_disconnect(device.board);
33+
}, 2000);
1934
});
2035
});

examples/led.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,31 @@
1-
var MetaWear = require('../index')//require('metawear');
1+
// LOCAL
2+
var MetaWear = require('../index')
3+
// METAWEAR
4+
//require('metawear');
25

3-
// If you know the MAC address, you can uncomment this line
4-
MetaWear.discoverByAddress('c8:4b:aa:97:50:05', function(device) {
6+
var cbindings = require('../MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
7+
var ref = require('ref');
8+
9+
// If you know the MAC address:
10+
MetaWear.discoverByAddress('ea:78:c3:d3:f0:8a', function(device) {
511
//MetaWear.discover(function (device) {
612
device.connectAndSetUp(function (error) {
13+
// Create a LED patter type
714
var pattern = new MetaWear.LedPattern();
15+
// Load a LED pattern already in firmware
816
MetaWear.mbl_mw_led_load_preset_pattern(pattern.ref(), MetaWear.LedPreset.BLINK);
17+
// Send pattern to Board
918
MetaWear.mbl_mw_led_write_pattern(device.board, pattern.ref(), MetaWear.LedColor.GREEN);
19+
// Tell board to play pattern
1020
MetaWear.mbl_mw_led_play(device.board);
1121
setTimeout(function () {
1222
device.on('disconnect', function () {
1323
process.exit(0);
1424
});
25+
// Stop LED
26+
MetaWear.mbl_mw_led_stop_and_clear(device.board);
27+
// Debug reset board
1528
MetaWear.mbl_mw_debug_reset(device.board);
16-
}, 5000);
29+
}, 5000); // Wait 5 seconds
1730
});
1831
});

examples/led_dongle.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
// LOCAL
2+
var MetaWear = require('../index')
3+
// METAWEAR
4+
//require('metawear');
5+
6+
var cbindings = require('../MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
7+
18
//Multiple Adapters
29
//hci0 is used by default to override set the NOBLE_HCI_DEVICE_ID environment variable to the interface number.
310
//Example, specify hci1:
@@ -7,21 +14,26 @@
714
//By default noble waits for both the advertisement data and scan response data for each Bluetooth address. If your device does not use scan response the following environment variable can be used to bypass it.
815
//sudo NOBLE_REPORT_ALL_HCI_EVENTS=1 node <your file>.js
916

10-
var MetaWear = require('../index')//require('metawear');
11-
12-
// If you know the MAC address, you can uncomment this line
13-
MetaWear.discoverByAddress('f9:b5:f9:81:3f:77', function(device) {
17+
// If you know the MAC address:
18+
MetaWear.discoverByAddress('ea:78:c3:d3:f0:8a', function(device) {
1419
//MetaWear.discover(function (device) {
1520
device.connectAndSetUp(function (error) {
21+
// Create a LED patter type
1622
var pattern = new MetaWear.LedPattern();
23+
// Load a LED pattern already in firmware
1724
MetaWear.mbl_mw_led_load_preset_pattern(pattern.ref(), MetaWear.LedPreset.BLINK);
25+
// Send pattern to Board
1826
MetaWear.mbl_mw_led_write_pattern(device.board, pattern.ref(), MetaWear.LedColor.GREEN);
27+
// Tell board to play pattern
1928
MetaWear.mbl_mw_led_play(device.board);
2029
setTimeout(function () {
2130
device.on('disconnect', function () {
2231
process.exit(0);
2332
});
33+
// Stop LED
34+
MetaWear.mbl_mw_led_stop_and_clear(device.board);
35+
// Debug reset board
2436
MetaWear.mbl_mw_debug_reset(device.board);
25-
}, 5000);
37+
}, 5000); // Wait 5 seconds
2638
});
2739
});

examples/led_macro.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1-
var MetaWear = require('../index')//require('metawear');
1+
// LOCAL
2+
var MetaWear = require('../index')
3+
// METAWEAR
4+
//require('metawear');
5+
6+
var cbindings = require('../MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
27
var ref = require('ref');
38

4-
// If you know the MAC address, you can uncomment this line
5-
MetaWear.discoverByAddress('f9:b5:f9:81:3f:77', function(device) {
9+
// If you know the MAC address:
10+
MetaWear.discoverByAddress('ea:78:c3:d3:f0:8a', function(device) {
11+
// This connects to the closest Metawear
612
//MetaWear.discover(function (device) {
713
device.connectAndSetUp(async function (error) {
8-
14+
// Record the macro
915
console.log('Macro started');
10-
MetaWear.mbl_mw_macro_record(device.board, 1)
11-
16+
MetaWear.mbl_mw_macro_record(device.board, 1) // 1 means to exect the macro on boot, else macro must be executed with mbl_mw_execute
17+
// Create and LED pattern and play it
1218
console.log('LED');
1319
var pattern = new MetaWear.LedPattern();
1420
MetaWear.mbl_mw_led_load_preset_pattern(pattern.ref(), MetaWear.LedPreset.BLINK);
1521
MetaWear.mbl_mw_led_write_pattern(device.board, pattern.ref(), MetaWear.LedColor.GREEN);
1622
MetaWear.mbl_mw_led_play(device.board);
1723
console.log('END');
18-
24+
// End the macro recording
1925
var promise = new Promise((resolve, reject) => {
2026
var macro = MetaWear.mbl_mw_macro_end_record(device.board, ref.NULL, MetaWear.FnVoid_VoidP_Int.toPointer(function onSignal(context, rec) {
2127
console.log('Macro created');
@@ -24,12 +30,14 @@ MetaWear.discoverByAddress('f9:b5:f9:81:3f:77', function(device) {
2430
}));
2531
});
2632
var rec = await promise;
27-
2833
setTimeout(function () {
34+
console.log('WAIT 5 SECONDS');
2935
device.on('disconnect', function () {
36+
// End terminal process
3037
process.exit(0);
3138
});
39+
// Reset board
3240
MetaWear.mbl_mw_debug_reset(device.board);
33-
}, 5000);
41+
}, 5000); // Wait 5 seconds
3442
});
3543
});
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1-
var MetaWear = require('../index')//require('metawear');
1+
// LOCAL
2+
var MetaWear = require('../index')
3+
// METAWEAR
4+
//require('metawear');
5+
6+
var cbindings = require('../MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
27
var ref = require('ref');
8+
9+
// THIS IS FOR THE MMR, MMC, or MMRL ONLY
10+
311
// Store the log event for later download. If your program needs to terminate
412
// before performing the log download, you will need to use mbl_mw_metawearboard_serialize
513
// to store the device state and that pass that state as the second argument to
614
// connectAndSetUp when you are ready to download. Use mbl_mw_logger_lookup_id
715
// to retrieve this accelLogger object
816
var accelLogger = null;
917

10-
// If you know the MAC address, you can uncomment this line
18+
// If you know the MAC address:
1119
MetaWear.discoverByAddress('d1:e7:65:2a:ad:6f', function (device) {
1220
//MetaWear.discover(function (device) {
1321
console.log('discovered ' + device.address);

0 commit comments

Comments
 (0)