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

Commit f9dab11

Browse files
committed
Updated example scripts
1 parent b162de5 commit f9dab11

File tree

10 files changed

+365
-30
lines changed

10 files changed

+365
-30
lines changed

examples/data_fuser.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# usage: python data_fuser.py [mac1] [mac2] ... [mac(n)]
2+
from __future__ import print_function
13
from ctypes import c_void_p, cast, POINTER
24
from mbientlab.metawear import MetaWear, libmetawear, parse_value, cbindings
35
from time import sleep
@@ -38,6 +40,7 @@ def processor_created(context, pointer):
3840
libmetawear.mbl_mw_datasignal_subscribe(self.processor, None, self.callback)
3941

4042
def start(self):
43+
4144
libmetawear.mbl_mw_gyro_bmi160_enable_rotation_sampling(self.device.board)
4245
libmetawear.mbl_mw_acc_enable_acceleration_sampling(self.device.board)
4346

@@ -51,15 +54,15 @@ def start(self):
5154
states.append(State(d))
5255

5356
for s in states:
54-
print("configuring %s" % (s.device.address))
57+
print("Configuring %s" % (s.device.address))
5558
s.setup()
5659

5760
for s in states:
5861
s.start()
5962

6063
sleep(10.0)
6164

62-
print("resetting devices")
65+
print("Resetting devices")
6366
events = []
6467
for s in states:
6568
e = Event()

examples/data_processor.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# usage: python data_processor.py [mac1] [mac2] ... [mac(n)]
2+
from __future__ import print_function
3+
from ctypes import c_void_p, cast, POINTER
4+
from mbientlab.metawear import MetaWear, libmetawear, parse_value, cbindings
5+
from time import sleep
6+
from threading import Event
7+
from sys import argv
8+
9+
states = []
10+
11+
class State:
12+
def __init__(self, device):
13+
self.device = device
14+
self.callback = cbindings.FnVoid_VoidP_DataP(self.data_handler)
15+
self.processor = None
16+
17+
def data_handler(self, ctx, data):
18+
print("%s -> %s" % (self.device.address, parse_value(data)))
19+
20+
def setup(self):
21+
libmetawear.mbl_mw_settings_set_connection_parameters(self.device.board, 7.5, 7.5, 0, 6000)
22+
sleep(1.5)
23+
24+
e = Event()
25+
26+
def processor_created(context, pointer):
27+
self.processor = pointer
28+
e.set()
29+
fn_wrapper = cbindings.FnVoid_VoidP_VoidP(processor_created)
30+
31+
acc = libmetawear.mbl_mw_acc_get_acceleration_data_signal(self.device.board)
32+
libmetawear.mbl_mw_dataprocessor_average_create(acc, 4, None, fn_wrapper)
33+
e.wait()
34+
libmetawear.mbl_mw_datasignal_subscribe(self.processor, None, self.callback)
35+
36+
def start(self):
37+
38+
libmetawear.mbl_mw_acc_enable_acceleration_sampling(self.device.board)
39+
libmetawear.mbl_mw_acc_start(self.device.board)
40+
41+
for i in range(len(argv) - 1):
42+
d = MetaWear(argv[i + 1])
43+
d.connect()
44+
print("Connected to " + d.address)
45+
states.append(State(d))
46+
47+
for s in states:
48+
print("Configuring %s" % (s.device.address))
49+
s.setup()
50+
51+
for s in states:
52+
s.start()
53+
54+
sleep(5.0)
55+
56+
print("Resetting devices")
57+
events = []
58+
for s in states:
59+
e = Event()
60+
events.append(e)
61+
62+
s.device.on_disconnect = lambda s: e.set()
63+
libmetawear.mbl_mw_debug_reset(s.device.board)
64+
65+
for e in events:
66+
e.wait()

examples/firmware_build.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# usage: python firmware_build.py [mac]
2+
from ctypes import *
3+
from mbientlab.metawear import MetaWear, libmetawear
4+
from mbientlab.metawear.cbindings import *
5+
from time import sleep
6+
from threading import Event
7+
8+
import sys
9+
10+
m = MetaWear(sys.argv[1])
11+
m.connect()
12+
print("Connected")
13+
14+
size= c_uint(0)
15+
info = libmetawear.mbl_mw_metawearboard_get_module_info(m.board, byref(size))
16+
17+
i = 15
18+
#print(info[i].name == b'Settings')
19+
20+
if (info[i].extra_len >= 2):
21+
print(info[i].extra[1])
22+
else:
23+
print("Firmware build not available")
24+
25+
libmetawear.mbl_mw_memory_free(info)

examples/led.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# usage: python led.py [mac]
2+
from __future__ import print_function
23
from mbientlab.metawear import MetaWear, libmetawear
34
from mbientlab.metawear.cbindings import *
45
from time import sleep

examples/log_acc.py

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# usage: python log_acc [mac]
2+
from __future__ import print_function
3+
from mbientlab.metawear import MetaWear, libmetawear, parse_value
4+
from mbientlab.metawear.cbindings import *
5+
from time import sleep
6+
from threading import Event
7+
8+
import platform
9+
import sys
10+
11+
if sys.version_info[0] == 2:
12+
range = xrange
13+
14+
class State:
15+
def __init__(self, device):
16+
self.device = device
17+
18+
def setup_logger(self):
19+
e = Event()
20+
result = [None]
21+
22+
def logger_handler(ctx, pointer):
23+
result[0] = RuntimeError("Could not create logger") if pointer == None else pointer
24+
e.set()
25+
fn_wrapper = FnVoid_VoidP_VoidP(logger_handler)
26+
27+
signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(self.device.board)
28+
libmetawear.mbl_mw_datasignal_log(signal, None, fn_wrapper)
29+
e.wait()
30+
31+
if (result[0] is RuntimeError):
32+
raise result[0]
33+
34+
self.logger = result[0]
35+
36+
libmetawear.mbl_mw_acc_enable_acceleration_sampling(self.device.board)
37+
libmetawear.mbl_mw_acc_start(self.device.board)
38+
libmetawear.mbl_mw_logging_start(self.device.board, 0);
39+
40+
def download_data(self):
41+
libmetawear.mbl_mw_acc_stop(self.device.board)
42+
libmetawear.mbl_mw_acc_disable_acceleration_sampling(self.device.board)
43+
libmetawear.mbl_mw_logging_stop(self.device.board)
44+
45+
e = Event()
46+
def progress_update_handler(context, entries_left, total_entries):
47+
if (entries_left == 0):
48+
e.set()
49+
50+
fn_wrapper = FnVoid_VoidP_UInt_UInt(progress_update_handler)
51+
download_handler= LogDownloadHandler(context = None, \
52+
received_progress_update = fn_wrapper, \
53+
received_unknown_entry = cast(None, FnVoid_VoidP_UByte_Long_UByteP_UByte), \
54+
received_unhandled_entry = cast(None, FnVoid_VoidP_DataP))
55+
56+
callback = FnVoid_VoidP_DataP(lambda ctx, p: print("%s -> %s" % (self.device.address, parse_value(p))))
57+
libmetawear.mbl_mw_logger_subscribe(self.logger, None, callback)
58+
libmetawear.mbl_mw_logging_download(self.device.board, 0, byref(download_handler))
59+
e.wait()
60+
61+
print("Searching for device...")
62+
d = MetaWear(sys.argv[1])
63+
d.connect()
64+
print("Connected to " + d.address)
65+
s = State(d)
66+
67+
print("Configuring device")
68+
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
69+
sleep(1.0)
70+
71+
try:
72+
s.setup_logger()
73+
74+
print("Logging data for 15s")
75+
sleep(15.0)
76+
77+
s.download_data()
78+
79+
except RuntimeError as e:
80+
print(e)
81+
82+
finally:
83+
print("Resetting device")
84+
e = Event()
85+
s.device.on_disconnect = lambda status: e.set()
86+
libmetawear.mbl_mw_debug_reset(s.device.board)
87+
e.wait()

examples/log_temp.py

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# usage: python log_temp [mac]
2+
from __future__ import print_function
3+
from mbientlab.metawear import MetaWear, libmetawear, parse_value
4+
from mbientlab.metawear.cbindings import *
5+
from time import sleep
6+
from threading import Event
7+
8+
import platform
9+
import sys
10+
11+
if sys.version_info[0] == 2:
12+
range = xrange
13+
14+
class State:
15+
def __init__(self, device):
16+
self.device = device
17+
18+
def setup_logger(self):
19+
e = Event()
20+
result = [None]
21+
22+
def logger_handler(ctx, pointer):
23+
result[0] = RuntimeError("Could not create logger") if pointer == None else pointer
24+
e.set()
25+
fn_wrapper = FnVoid_VoidP_VoidP(logger_handler)
26+
27+
#streaming and logging
28+
signal = libmetawear.mbl_mw_multi_chnl_temp_get_temperature_data_signal(self.device.board, \
29+
MetaWearRProChannel.ON_BOARD_THERMISTOR)
30+
libmetawear.mbl_mw_datasignal_log(signal, None, fn_wrapper)
31+
e.wait()
32+
33+
if (result[0] is RuntimeError):
34+
raise result[0]
35+
36+
self.logger = result[0]
37+
self.timer = self._setup_timer()
38+
self._setup_read_event(self.timer, signal)
39+
40+
libmetawear.mbl_mw_logging_start(self.device.board, 0);
41+
libmetawear.mbl_mw_timer_start(self.timer)
42+
43+
def _setup_timer(self):
44+
e = Event()
45+
result = [None]
46+
47+
def timer_handler(ctx, pointer):
48+
result[0] = RuntimeError("Could not create timer") if pointer == None else pointer
49+
e.set()
50+
fn_wrapper = FnVoid_VoidP_VoidP(timer_handler)
51+
52+
libmetawear.mbl_mw_timer_create_indefinite(self.device.board, 1000, 0, None, fn_wrapper)
53+
e.wait()
54+
55+
if (result[0] is RuntimeError):
56+
raise result[0]
57+
58+
return result[0]
59+
60+
def _setup_read_event(self, timer, signal):
61+
e = Event()
62+
result = [None]
63+
64+
def commands_recorded(ctx, event, status):
65+
result[0] = RuntimeError("Could not create read event") if status != Const.STATUS_OK else None
66+
e.set()
67+
fn_wrapper = FnVoid_VoidP_VoidP_Int(commands_recorded)
68+
69+
libmetawear.mbl_mw_event_record_commands(timer)
70+
libmetawear.mbl_mw_datasignal_read(signal)
71+
libmetawear.mbl_mw_event_end_record(timer, None, fn_wrapper)
72+
e.wait()
73+
74+
if (result[0] is RuntimeError):
75+
raise result[0]
76+
77+
def download_data(self):
78+
libmetawear.mbl_mw_timer_remove(self.timer)
79+
libmetawear.mbl_mw_logging_stop(self.device.board)
80+
81+
e = Event()
82+
def progress_update_handler(context, entries_left, total_entries):
83+
if (entries_left == 0):
84+
e.set()
85+
86+
fn_wrapper = FnVoid_VoidP_UInt_UInt(progress_update_handler)
87+
download_handler= LogDownloadHandler(context = None, \
88+
received_progress_update = fn_wrapper, \
89+
received_unknown_entry = cast(None, FnVoid_VoidP_UByte_Long_UByteP_UByte), \
90+
received_unhandled_entry = cast(None, FnVoid_VoidP_DataP))
91+
92+
callback = FnVoid_VoidP_DataP(lambda ctx, p: print("%f" % (parse_value(p))))
93+
libmetawear.mbl_mw_logger_subscribe(self.logger, None, callback)
94+
libmetawear.mbl_mw_logging_download(self.device.board, 0, byref(download_handler))
95+
e.wait()
96+
97+
98+
99+
print("Searching for device...")
100+
d = MetaWear(sys.argv[1])
101+
d.connect()
102+
print("Connected to " + d.address)
103+
s = State(d)
104+
105+
print("Configuring device")
106+
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
107+
sleep(1.0)
108+
109+
try:
110+
#logging
111+
s.setup_logger()
112+
113+
print("Logging data for 15s")
114+
sleep(15.0)
115+
116+
s.download_data()
117+
except RuntimeError as e:
118+
print(e)
119+
finally:
120+
print("Resetting device")
121+
e = Event()
122+
s.device.on_disconnect = lambda status: e.set()
123+
libmetawear.mbl_mw_debug_reset(s.device.board)
124+
e.wait()

examples/multi_device.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# usage: python multi_device [mac1] [mac2] ... [mac(n)]
2+
from __future__ import print_function
23
from mbientlab.metawear import MetaWear, libmetawear, parse_value
34
from mbientlab.metawear.cbindings import *
45
from time import sleep
@@ -28,7 +29,7 @@ def data_handler(self, ctx, data):
2829
states.append(State(d))
2930

3031
for s in states:
31-
print("configuring device")
32+
print("Configuring device")
3233
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
3334
sleep(1.5)
3435

examples/scan_connect.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# usage: python scan_connect.py
2+
from __future__ import print_function
23
from mbientlab.metawear import MetaWear
34
from mbientlab.metawear.cbindings import *
45
from mbientlab.warble import *

0 commit comments

Comments
 (0)