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

Commit 1a7e92c

Browse files
committed
api v0.4.0 commit
1 parent c020eeb commit 1a7e92c

File tree

8 files changed

+492
-363
lines changed

8 files changed

+492
-363
lines changed

MetaWear-SDK-Cpp

Submodule MetaWear-SDK-Cpp updated 122 files

examples/anonymous_datasignals.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,62 +15,62 @@
1515
metawear.connect()
1616
print("Connected")
1717

18-
sync_event = Event()
18+
e = Event()
1919
result = {}
20-
def handler(board, signals, len):
20+
def handler(ctx, board, signals, len):
2121
result['length'] = len
2222
result['signals'] = cast(signals, POINTER(c_void_p * len)) if signals is not None else None
23-
sync_event.set()
24-
handler_fn = FnVoid_VoidP_VoidP_UInt(handler)
23+
e.set()
24+
handler_fn = FnVoid_VoidP_VoidP_VoidP_UInt(handler)
2525

2626
class DataHandler:
2727
def __init__(self, signal):
28-
raw = libmetawear.mbl_mw_anonymous_datasignal_get_identifier(signal)
29-
self.identifier = cast(raw, c_char_p).value.decode("ascii")
30-
self.data_handler_fn = FnVoid_DataP(lambda ptr: print({"identifier": self.identifier, "epoch": ptr.contents.epoch, "value": parse_value(ptr)}))
31-
32-
libmetawear.mbl_mw_memory_free(raw)
28+
self.identifier = libmetawear.mbl_mw_anonymous_datasignal_get_identifier(signal)
29+
self.data_handler_fn = FnVoid_VoidP_DataP(lambda ctx, ptr: print({"identifier": self.identifier, "epoch": ptr.contents.epoch, "value": parse_value(ptr)}))
3330

3431
print("Creating anonymous signals")
3532
libmetawear.mbl_mw_settings_set_connection_parameters(metawear.board, 7.5, 7.5, 0, 6000)
3633
sleep(1.0)
37-
libmetawear.mbl_mw_metawearboard_create_anonymous_datasignals(metawear.board, handler_fn)
38-
sync_event.wait()
34+
libmetawear.mbl_mw_metawearboard_create_anonymous_datasignals(metawear.board, None, handler_fn)
35+
e.wait()
3936

4037
if (result['signals'] == None):
4138
if (result['length'] != 0):
4239
print("Error creating anonymous signals, status = " + str(result['length']))
4340
else:
4441
print("No active loggers detected")
4542
else:
46-
dl_event = Event()
43+
e.clear()
4744
libmetawear.mbl_mw_logging_stop(metawear.board)
4845

4946
print(str(result['length']) + " active loggers discovered")
5047
handlers = []
5148
for x in range(0, result['length']):
5249
wrapper = DataHandler(result['signals'].contents[x])
53-
libmetawear.mbl_mw_anonymous_datasignal_subscribe(result['signals'].contents[x], wrapper.data_handler_fn)
50+
libmetawear.mbl_mw_anonymous_datasignal_subscribe(result['signals'].contents[x], None, wrapper.data_handler_fn)
5451
handlers.append(wrapper)
5552

56-
def progress_update_handler(left, total):
53+
def progress_update_handler(ctx, left, total):
5754
if (left == 0):
58-
dl_event.set()
55+
e.set()
5956

60-
def unknown_entry_handler(id, epoch, data, length):
57+
def unknown_entry_handler(ctx, id, epoch, data, length):
6158
print("unknown entry = " + str(id))
6259

6360
print("Downloading log")
64-
progress_update_fn = FnVoid_UInt_UInt(progress_update_handler)
65-
unknown_entry_fn = FnVoid_UByte_Long_UByteP_UByte(unknown_entry_handler)
66-
download_handler= LogDownloadHandler(received_progress_update = progress_update_fn,
67-
received_unknown_entry = unknown_entry_fn, received_unhandled_entry = cast(None, FnVoid_DataP))
61+
progress_update_fn = FnVoid_VoidP_UInt_UInt(progress_update_handler)
62+
unknown_entry_fn = FnVoid_VoidP_UByte_Long_UByteP_UByte(unknown_entry_handler)
63+
download_handler= LogDownloadHandler(context = None, received_progress_update = progress_update_fn,
64+
received_unknown_entry = unknown_entry_fn, received_unhandled_entry = cast(None, FnVoid_VoidP_DataP))
6865
libmetawear.mbl_mw_logging_download(metawear.board, 10, byref(download_handler))
69-
dl_event.wait()
66+
e.wait()
7067

7168
print("Download completed")
7269
libmetawear.mbl_mw_macro_erase_all(metawear.board)
7370
libmetawear.mbl_mw_debug_reset_after_gc(metawear.board)
74-
libmetawear.mbl_mw_debug_disconnect(metawear.board)
7571

76-
sleep(1.0)
72+
e.clear()
73+
metawear.on_disconnect = lambda status: e.set()
74+
75+
libmetawear.mbl_mw_debug_disconnect(metawear.board)
76+
e.wait()

examples/multi_device.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ class State:
1414
def __init__(self, device):
1515
self.device = device
1616
self.samples = 0
17-
self.callback = FnVoid_DataP(self.data_handler)
17+
self.callback = FnVoid_VoidP_DataP(self.data_handler)
1818

19-
def data_handler(self, data):
19+
def data_handler(self, ctx, data):
2020
print("%s -> %s" % (self.device.address, parse_value(data)))
2121
self.samples+= 1
2222

@@ -30,15 +30,15 @@ def data_handler(self, data):
3030
for s in states:
3131
print("configuring device")
3232
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
33-
libmetawear.mbl_mw_acc_set_odr(s.device.board, 25.0);
34-
libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0);
35-
libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board);
33+
libmetawear.mbl_mw_acc_set_odr(s.device.board, 25.0)
34+
libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0)
35+
libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board)
3636

3737
signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(s.device.board)
38-
libmetawear.mbl_mw_datasignal_subscribe(signal, s.callback)
38+
libmetawear.mbl_mw_datasignal_subscribe(signal, None, s.callback)
3939

40-
libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board);
41-
libmetawear.mbl_mw_acc_start(s.device.board);
40+
libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)
41+
libmetawear.mbl_mw_acc_start(s.device.board)
4242

4343
sleep(30.0)
4444

examples/scan_connect.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
# usage: python scan_connect.py
22
from mbientlab.metawear import MetaWear
33
from mbientlab.metawear.cbindings import *
4-
from gattlib import DiscoveryService
4+
from mbientlab.warble import *
55
from time import sleep
66

77
import platform
8+
import six
89

910
selection = -1
1011
devices = None
1112

1213
while selection == -1:
13-
service = DiscoveryService("hci0")
14-
devices = service.discover(2)
14+
print("scanning for devices...")
15+
devices = {}
16+
def handler(result):
17+
devices[result.mac] = result.name
18+
19+
BleScanner.set_handler(handler)
20+
BleScanner.start()
21+
22+
sleep(10.0)
23+
BleScanner.stop()
1524

1625
i = 0
17-
for address, attr in devices.items():
18-
print("[%d] %s (%s)" % (i, address, attr['name']))
26+
for address, name in six.iteritems(devices):
27+
print("[%d] %s (%s)" % (i, address, name))
1928
i+= 1
2029

2130
msg = "Select your device (-1 to rescan): "

examples/update_firmware.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# usage: python update_firmware.py [mac] [version](optional)
2+
from mbientlab.metawear import MetaWear, libmetawear
3+
from threading import Event
4+
5+
import sys
6+
7+
device = MetaWear(sys.argv[1])
8+
device.connect()
9+
print("Connected")
10+
11+
args = {
12+
'progress_handler': lambda p: print("upload: %d%%" % (p)),
13+
}
14+
if (len(sys.argv) >= 3):
15+
args['version'] = sys.argv[2]
16+
17+
e = Event()
18+
result = []
19+
def dfu_handler(err):
20+
result.append(err)
21+
e.set()
22+
23+
device.update_firmware_async(dfu_handler, **args)
24+
e.wait()
25+
26+
if (result[0] != None):
27+
raise result[0]

0 commit comments

Comments
 (0)