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

Commit 71e6bbb

Browse files
committed
update examples
1 parent 93435d8 commit 71e6bbb

9 files changed

+443
-1
lines changed

examples/setup_connect.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
var MetaWear = require('../index')//require('metawear');
2+
var ref = require('ref');
3+
4+
MetaWear.discoverByAddress('c8:4b:aa:97:50:05', function(device) {
5+
//MetaWear.discover(function (device) {
6+
console.log('got em');
7+
// you can be notified of disconnects
8+
device.on('disconnect', function () {
9+
console.log('we got disconnected! :( ');
10+
});
11+
// Call connect and set up - this calls mbl_mw_metawearboard_initialize()
12+
device.connectAndSetUp(function (error) {
13+
console.log('were connected!');
14+
// Adjust link speed - set the min conn interval to 7.5ms and the max conn interval to 7.5ms
15+
// Adjust link speed - set the latency to 0ms and the timeout to 4000ms
16+
// Connection interval = how often devices talk - min is 7.5ms, it increases in steps of 1.25ms
17+
// Slave latency = metawear can choose not to answer when central asks for an update (i.e metawear can sleep longer - doesn't affect transfer speeds)
18+
// Connection supervision timeout = determines timeout from last data exchange (tells central how long to wait to attempt to reconnect to a lost conn - if your metawear goes in and out of range often, it is better to have a short timeout)
19+
// This is not guaranteed to work, central can reject peripheral and vice-versa. Apple only accepts 15ms for example.
20+
MetaWear.mbl_mw_settings_set_connection_parameters(device.board, 7.5, 7.5, 0, 4000);
21+
console.log('link speed updated');
22+
// Everything we know about the device:
23+
console.log(device);
24+
// Calls using CDK CPP:
25+
model = MetaWear.mbl_mw_metawearboard_get_model(device.board);
26+
console.log('Model: ' + model);
27+
device.modelDescription = MetaWear.mbl_mw_metawearboard_get_model_name(device.board);
28+
console.log('Model Name: ' + device.modelDescription);
29+
var present = MetaWear.mbl_mw_metawearboard_lookup_module(device.board, 'GYRO');
30+
console.log('Gyroscope: ' + (present == -1 ? 'Not Present' : 'Present'));
31+
present = MetaWear.mbl_mw_metawearboard_lookup_module(device.board, 'ACCELEROMETER');
32+
console.log('Accelerometer: ' + (present == -1 ? 'Not Present' : 'Present'));
33+
present = MetaWear.mbl_mw_metawearboard_lookup_module(device.board, 'MAGNETOMETER');
34+
console.log('Magnetometer: ' + (present == -1 ? 'Not Present' : 'Present'));
35+
present = MetaWear.mbl_mw_metawearboard_lookup_module(device.board, 'SENSOR_FUSION');
36+
console.log('Sensor Fusion: ' + (present == -1 ? 'Not Present' : 'Present'));
37+
// Calls Noble APIs:
38+
device.readManufacturerName(function (error, manufacturerName) {
39+
console.log('Manufacturer Name: ' + manufacturerName);
40+
});
41+
device.readSerialNumber(function (error, serialNumber) {
42+
console.log('Serial #: ' + serialNumber);
43+
});
44+
device.readHardwareRevision(function (error, hardwareRevision) {
45+
console.log('Hardware Revision: ' + hardwareRevision);
46+
});
47+
device.readFirmwareRevision(function (error, firmwareRevision) {
48+
console.log('Firmware Revision: ' + firmwareRevision);
49+
});
50+
device.readModelNumber(function (error, modelNumber) {
51+
device.modelNumber = modelNumber;
52+
console.log('Model #: ' + modelNumber);
53+
54+
});
55+
setTimeout(function () {
56+
device.disconnect(function (error) {
57+
console.log('disconnect call finished');
58+
process.exit(0);
59+
});
60+
}, 1000);
61+
});
62+
});

examples/stream_acc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var MetaWear = require('../index');
1+
var MetaWear = require('metawear');
22
var ref = require('ref')
33

44
async function mainAsync(mac) {

examples/stream_acc_accounter.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
var MetaWear = require('metawear');
2+
var ref = require('ref');
3+
4+
async function mainAsync(mac) {
5+
// Find device with MAC address
6+
var device = await new Promise((resolve, reject) => MetaWear.discoverByAddress(mac.toLowerCase(), d => resolve(d)))
7+
8+
// Connect to device with MAC address
9+
await new Promise((resolve, reject) => {
10+
console.log('Connecting...')
11+
device.connectAndSetUp(error => {
12+
console.log('Connected.')
13+
if(error == null) resolve(null)
14+
else reject(error)
15+
})
16+
})
17+
18+
// Get the accelerometer signal
19+
let acc = MetaWear.mbl_mw_acc_get_acceleration_data_signal(device.board);
20+
21+
// Add a counter to the accelerometer signal
22+
let accounter = await new Promise((resolve, reject) => {
23+
MetaWear.mbl_mw_dataprocessor_accounter_create(acc, ref.NULL, MetaWear.FnVoid_VoidP_DataProcessorP.toPointer((ctx, pointer) => {
24+
console.log('Accounter Created');
25+
resolve(pointer);
26+
}))
27+
});
28+
console.log(accounter);
29+
30+
console.log('Set up stream.')
31+
MetaWear.mbl_mw_datasignal_subscribe(accounter, ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer((ctx, pointer) => {
32+
var data = pointer.deref();
33+
var value = data.parseValue();
34+
console.log('epoch: ' + data.epoch + ' acc: ' + value.x + ' ' + value.y + ' ' + value.z)
35+
}))
36+
37+
console.log('Start accelerometer.')
38+
MetaWear.mbl_mw_acc_enable_acceleration_sampling(device.board)
39+
MetaWear.mbl_mw_acc_start(device.board)
40+
41+
process.openStdin().addListener("data", data => {
42+
console.log('Reset.')
43+
MetaWear.mbl_mw_debug_reset(device.board)
44+
})
45+
}
46+
47+
mainAsync(process.argv[2])
48+

examples/stream_acc_accumulator.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
var MetaWear = require('metawear');
2+
var cbindings = require('./MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
3+
var ref = require('ref');
4+
5+
async function mainAsync(mac) {
6+
// Find device with MAC address
7+
var device = await new Promise((resolve, reject) => MetaWear.discoverByAddress(mac.toLowerCase(), d => resolve(d)))
8+
9+
// Connect to device with MAC address
10+
await new Promise((resolve, reject) => {
11+
console.log('Connecting...')
12+
device.connectAndSetUp(error => {
13+
console.log('Connected.')
14+
if(error == null) resolve(null)
15+
else reject(error)
16+
})
17+
})
18+
19+
// Get the accelerometer signal
20+
let baro = MetaWear.mbl_mw_baro_bosch_get_pressure_data_signal(device.board);
21+
22+
// Create an averager of the
23+
let accumulator = await new Promise((resolve, reject) => {
24+
MetaWear.mbl_mw_dataprocessor_accumulator_create(baro, ref.NULL, MetaWear.FnVoid_VoidP_DataProcessorP.toPointer((ctx, pointer) => {
25+
console.log('Accumulator Created');
26+
resolve(pointer);
27+
}))
28+
});
29+
console.log(accumulator);
30+
31+
MetaWear.mbl_mw_dataprocessor_set_accumulator_state(accumulator, 0);
32+
33+
console.log('Set up stream.')
34+
MetaWear.mbl_mw_datasignal_subscribe(accumulator, ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer((ctx, pointer) => {
35+
var data = pointer.deref();
36+
var value = data.parseValue();
37+
console.log('epoch: ' + data.epoch + ' pressure: ' + value)
38+
}))
39+
40+
console.log('Start barometer.')
41+
MetaWear.mbl_mw_baro_bosch_start(device.board);
42+
43+
process.openStdin().addListener("data", data => {
44+
console.log('Reset.')
45+
MetaWear.mbl_mw_debug_reset(device.board)
46+
})
47+
}
48+
49+
mainAsync(process.argv[2])
50+

examples/stream_acc_averager.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
var MetaWear = require('metawear');
2+
var cbindings = require('./MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
3+
var ref = require('ref');
4+
5+
async function mainAsync(mac) {
6+
// Find device with MAC address
7+
var device = await new Promise((resolve, reject) => MetaWear.discoverByAddress(mac.toLowerCase(), d => resolve(d)))
8+
9+
// Connect to device with MAC address
10+
await new Promise((resolve, reject) => {
11+
console.log('Connecting...')
12+
device.connectAndSetUp(error => {
13+
console.log('Connected.')
14+
if(error == null) resolve(null)
15+
else reject(error)
16+
})
17+
})
18+
19+
// Get the accelerometer signal
20+
let acc = MetaWear.mbl_mw_acc_get_acceleration_data_signal(device.board);
21+
let acc_x = MetaWear.mbl_mw_datasignal_get_component(acc, cbindings.Const.ACC_ACCEL_X_AXIS_INDEX);
22+
23+
// Create an averager of the
24+
let averager = await new Promise((resolve, reject) => {
25+
MetaWear.mbl_mw_dataprocessor_average_create(acc_x, 8, ref.NULL, MetaWear.FnVoid_VoidP_DataProcessorP.toPointer((ctx, pointer) => {
26+
console.log('Averager Created');
27+
resolve(pointer);
28+
}))
29+
});
30+
console.log(averager);
31+
32+
console.log('Set up stream.')
33+
MetaWear.mbl_mw_datasignal_subscribe(averager, ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer((ctx, pointer) => {
34+
var data = pointer.deref();
35+
var value = data.parseValue();
36+
console.log('epoch: ' + data.epoch + ' acc_x averaged: ' + value)
37+
}))
38+
39+
console.log('Start accelerometer.')
40+
MetaWear.mbl_mw_acc_enable_acceleration_sampling(device.board)
41+
MetaWear.mbl_mw_acc_start(device.board)
42+
43+
process.openStdin().addListener("data", data => {
44+
console.log('Reset.')
45+
MetaWear.mbl_mw_debug_reset(device.board)
46+
})
47+
}
48+
49+
mainAsync(process.argv[2])
50+

examples/stream_acc_buffer.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
var MetaWear = require('metawear');
2+
var cbindings = require('./MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
3+
var ref = require('ref');
4+
5+
async function setupStream(device) {
6+
// Get the accelerometer signal
7+
console.log('Get Accelerometer Signal');
8+
let acc = MetaWear.mbl_mw_acc_get_acceleration_data_signal(device.board);
9+
10+
// Create an averager of the
11+
let buffer = await new Promise((resolve, reject) => {
12+
MetaWear.mbl_mw_dataprocessor_buffer_create(acc, ref.NULL, MetaWear.FnVoid_VoidP_DataProcessorP.toPointer((ctx, pointer) => {
13+
console.log('Buffer Created');
14+
resolve(pointer);
15+
}))
16+
});
17+
console.log(buffer);
18+
19+
console.log('Set up stream.')
20+
MetaWear.mbl_mw_datasignal_subscribe(buffer, ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer((ctx, pointer) => {
21+
var data = pointer.deref();
22+
var value = data.parseValue();
23+
console.log(value);
24+
}))
25+
26+
console.log('Start accelerometer.');
27+
MetaWear.mbl_mw_acc_enable_acceleration_sampling(device.board);
28+
MetaWear.mbl_mw_acc_start(device.board);
29+
}
30+
31+
async function mainAsync(mac) {
32+
// Find device with MAC address
33+
console.log('Find device');
34+
var device = await new Promise((resolve, reject) => MetaWear.discoverByAddress(mac.toLowerCase(), d => resolve(d)))
35+
console.log('Found device');
36+
37+
console.log('Connecting...')
38+
await new Promise((resolve, reject) => {
39+
device.connectAndSetUp(error => {
40+
if(error == null) resolve(null)
41+
else reject(error)
42+
})
43+
});
44+
console.log('Connected.');
45+
46+
setupStream(device);
47+
48+
process.openStdin().addListener("data", data => {
49+
console.log('Reset.')
50+
MetaWear.mbl_mw_debug_reset(device.board)
51+
})
52+
}
53+
54+
mainAsync(process.argv[2])
55+

examples/stream_baro_comp.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
var MetaWear = require('./index.js');
2+
var cbindings = require('./MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
3+
var ref = require('ref');
4+
5+
MetaWear.discoverByAddress('c8:4b:aa:97:50:05', function(device) {
6+
console.log('Discovered');
7+
device.connectAndSetUp(async function (error) {
8+
console.log('Connected');
9+
10+
// Get pressure signal
11+
console.log('Get pressure');
12+
var baro = MetaWear.mbl_mw_baro_bosch_get_pressure_data_signal(device.board);
13+
14+
// Create a comparator to only allow temps >= 15 to passthrough
15+
var promise = new Promise((resolve, reject) => {
16+
var comparator = MetaWear.mbl_mw_dataprocessor_comparator_create(baro, 5, 102190.0, ref.NULL, MetaWear.FnVoid_VoidP_DataProcessorP.toPointer(function onSignal(context, comparator) {1
17+
console.log('comparator created');
18+
resolve(comparator);
19+
}));
20+
});
21+
let comparator = await promise;
22+
23+
// Subscribe to it
24+
console.log('Subscribe');
25+
MetaWear.mbl_mw_datasignal_subscribe(comparator, ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer((context, pointer) => {
26+
console.log('got data');
27+
var data = pointer.deref();
28+
var value = data.parseValue();
29+
console.log('epoch: ' + data.epoch + ' pressure: ' + value);
30+
}));
31+
32+
// Start timer
33+
console.log('Start');
34+
MetaWear.mbl_mw_baro_bosch_start(device.board);
35+
36+
console.log('Press any key to exit');
37+
process.stdin.setRawMode(true);
38+
process.stdin.resume();
39+
process.stdin.on('data', () => {
40+
console.log('Disconnect');
41+
MetaWear.mbl_mw_debug_reset(device.board);
42+
process.exit(0);
43+
});
44+
});
45+
});
46+

examples/stream_switch_count.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
var MetaWear = require('./index.js');
2+
var cbindings = require('./MetaWear-SDK-Cpp/bindings/javascript/cbindings.js');
3+
var ref = require('ref');
4+
5+
MetaWear.discoverByAddress('c8:4b:aa:97:50:05', function(device) {
6+
console.log('Discovered');
7+
device.connectAndSetUp(async function (error) {
8+
console.log('Connected');
9+
10+
// Get swithc signal
11+
console.log('Get switch');
12+
var switchs = MetaWear.mbl_mw_switch_get_state_data_signal(device.board);
13+
14+
// Create a counter
15+
console.log('Create counter');
16+
let counter = await new Promise((resolve, reject) => {
17+
MetaWear.mbl_mw_dataprocessor_counter_create(switchs, ref.NULL, MetaWear.FnVoid_VoidP_DataProcessorP.toPointer((ctx, pointer) => {
18+
console.log('Counter Created');
19+
resolve(pointer);
20+
}))
21+
});
22+
console.log(counter);
23+
24+
// Subscribe to it
25+
console.log('Subscribe');
26+
MetaWear.mbl_mw_datasignal_subscribe(counter, ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer((ctx, pointer) => {
27+
console.log('got data');
28+
var data = pointer.deref();
29+
var value = data.parseValue();
30+
console.log('epoch: ' + data.epoch + ' counter: ' + value);
31+
}));
32+
33+
// Create a timer
34+
console.log('Create timer');
35+
var promise = new Promise((resolve, reject) => {
36+
var timer = MetaWear.mbl_mw_timer_create_indefinite(device.board, 1000, 0, ref.NULL, MetaWear.FnVoid_VoidP_TimerP.toPointer(function onSignall(context, timer) {
37+
console.log('Timer created');
38+
resolve(timer);
39+
}));
40+
});
41+
let timer = await promise;
42+
43+
// Create event based on timer and record as a command
44+
console.log('Record command');
45+
MetaWear.mbl_mw_event_record_commands(timer);
46+
console.log('Command to read temp signal');
47+
MetaWear.mbl_mw_datasignal_read(counter);
48+
console.log('End record command');
49+
promise = new Promise((resolve, reject) => {
50+
var rec = MetaWear.mbl_mw_event_end_record(timer, ref.NULL, MetaWear.FnVoid_VoidP_EventP_Int.toPointer(function onSignal(context, dataPtr, lstatus) {
51+
console.log('Command created');
52+
resolve(lstatus);
53+
}));
54+
});
55+
let rec = await promise;
56+
57+
// Start timer
58+
console.log('Start');
59+
MetaWear.mbl_mw_timer_start(timer);
60+
61+
console.log('Press any key to exit');
62+
process.stdin.setRawMode(true);
63+
process.stdin.resume();
64+
process.stdin.on('data', () => {
65+
console.log('Disconnect');
66+
MetaWear.mbl_mw_debug_reset(device.board);
67+
process.exit(0);
68+
});
69+
});
70+
});

0 commit comments

Comments
 (0)