Skip to content

Commit 9af68a7

Browse files
committed
fix mms packed mode bug
1 parent f2a6afe commit 9af68a7

File tree

3 files changed

+154
-1
lines changed

3 files changed

+154
-1
lines changed

examples/stream_acc_packed.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# usage: python3 stream_acc_packed.py [mac1] [mac2] ... [mac(n)]
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+
# init
16+
def __init__(self, device):
17+
self.device = device
18+
self.samples = 0
19+
self.accCallback = FnVoid_VoidP_DataP(self.acc_data_handler)
20+
21+
# acc callback
22+
def acc_data_handler(self, ctx, data):
23+
values = parse_value(data)
24+
print("ACC: %s -> epoch: %s, data: %s" % (self.device.address, data.contents.epoch, values))
25+
self.samples+= 1
26+
27+
states = []
28+
29+
# connect
30+
for i in range(len(sys.argv) - 1):
31+
d = MetaWear(sys.argv[i + 1])
32+
d.connect()
33+
print("Connected to " + d.address)
34+
states.append(State(d))
35+
36+
# configure
37+
for s in states:
38+
print("Configuring device")
39+
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
40+
sleep(1.5)
41+
42+
# setup acc
43+
libmetawear.mbl_mw_acc_bmi270_set_odr(s.device.board, AccBmi270Odr._50Hz)
44+
#libmetawear.mbl_mw_acc_bmi160_set_odr(s.device.board, AccBmi160Odr._50Hz)
45+
libmetawear.mbl_mw_acc_bosch_set_range(s.device.board, AccBoschRange._4G)
46+
libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board)
47+
48+
# get acc and subscribe
49+
acc = libmetawear.mbl_mw_acc_get_packed_acceleration_data_signal(s.device.board)
50+
libmetawear.mbl_mw_datasignal_subscribe(acc, None, s.accCallback)
51+
52+
# start acc
53+
libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)
54+
libmetawear.mbl_mw_acc_start(s.device.board)
55+
56+
# sleep
57+
sleep(10.0)
58+
59+
# stop
60+
for s in states:
61+
libmetawear.mbl_mw_acc_stop(s.device.board)
62+
libmetawear.mbl_mw_acc_disable_acceleration_sampling(s.device.board)
63+
64+
acc = libmetawear.mbl_mw_acc_get_packed_acceleration_data_signal(s.device.board)
65+
libmetawear.mbl_mw_datasignal_unsubscribe(acc)
66+
67+
libmetawear.mbl_mw_debug_disconnect(s.device.board)
68+
69+
# recap
70+
print("Total Samples Received")
71+
for s in states:
72+
print("%s -> %d" % (s.device.address, s.samples))

examples/stream_gyro_packed.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# usage: python3 stream_gyro_packed.py [mac1] [mac2] ... [mac(n)]
2+
from __future__ import print_function
3+
4+
from mbientlab.metawear import MetaWear, libmetawear, parse_value
5+
from mbientlab.metawear.cbindings import *
6+
from time import sleep
7+
from threading import Event
8+
9+
import platform
10+
import sys
11+
12+
if sys.version_info[0] == 2:
13+
range = xrange
14+
15+
class State:
16+
# init
17+
def __init__(self, device):
18+
self.device = device
19+
self.samples = 0
20+
self.gyroCallback = FnVoid_VoidP_DataP(self.gyro_data_handler)
21+
22+
# gyro callback
23+
def gyro_data_handler(self, ctx, data):
24+
values = parse_value(data)
25+
print("GYRO: %s -> epoch: %s, data: %s" % (self.device.address, data.contents.epoch, values))
26+
self.samples+= 1
27+
28+
states = []
29+
30+
# connect
31+
for i in range(len(sys.argv) - 1):
32+
d = MetaWear(sys.argv[i + 1])
33+
d.connect()
34+
print("Connected to " + d.address)
35+
states.append(State(d))
36+
37+
# configure
38+
for s in states:
39+
print("Configuring device")
40+
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
41+
sleep(1.5)
42+
43+
# setup gyro
44+
print("Configuring acc")
45+
#libmetawear.mbl_mw_gyro_bmi160_set_range(s.device.board, GyroBoschRange._1000dps);
46+
#libmetawear.mbl_mw_gyro_bmi160_set_odr(s.device.board, GyroBoschOdr._50Hz);
47+
#libmetawear.mbl_mw_gyro_bmi160_write_config(s.device.board);
48+
libmetawear.mbl_mw_gyro_bmi270_set_range(s.device.board, GyroBoschRange._1000dps);
49+
libmetawear.mbl_mw_gyro_bmi270_set_odr(s.device.board, GyroBoschOdr._50Hz);
50+
libmetawear.mbl_mw_gyro_bmi270_write_config(s.device.board);
51+
52+
# get gyro and subscribe
53+
print("Packed signal")
54+
#gyro = libmetawear.mbl_mw_gyro_bmi160_get_packed_rotation_data_signal(s.device.board)
55+
gyro = libmetawear.mbl_mw_gyro_bmi270_get_packed_rotation_data_signal(s.device.board)
56+
libmetawear.mbl_mw_datasignal_subscribe(gyro, None, s.gyroCallback)
57+
58+
# start gyro
59+
print("Start gyro")
60+
#libmetawear.mbl_mw_gyro_bmi160_enable_rotation_sampling(s.device.board)
61+
#libmetawear.mbl_mw_gyro_bmi160_start(s.device.board)
62+
libmetawear.mbl_mw_gyro_bmi270_enable_rotation_sampling(s.device.board)
63+
libmetawear.mbl_mw_gyro_bmi270_start(s.device.board)
64+
65+
# sleep
66+
sleep(10.0)
67+
68+
# stop
69+
for s in states:
70+
libmetawear.mbl_mw_gyro_bmi270_stop(s.device.board)
71+
libmetawear.mbl_mw_gyro_bmi270_disable_rotation_sampling(s.device.board)
72+
73+
gyro = llibmetawear.mbl_mw_gyro_bmi270_get_packed_rotation_data_signal(s.device.board)
74+
libmetawear.mbl_mw_datasignal_unsubscribe(gyro)
75+
76+
libmetawear.mbl_mw_debug_disconnect(s.device.board)
77+
78+
# recap
79+
print("Total Samples Received")
80+
for s in states:
81+
print("%s -> %d" % (s.device.address, s.samples))

0 commit comments

Comments
 (0)