Skip to content

Commit

Permalink
api v0.4.0 commit
Browse files Browse the repository at this point in the history
  • Loading branch information
scaryghost committed Jun 13, 2018
1 parent c020eeb commit 1a7e92c
Show file tree
Hide file tree
Showing 8 changed files with 492 additions and 363 deletions.
2 changes: 1 addition & 1 deletion MetaWear-SDK-Cpp
Submodule MetaWear-SDK-Cpp updated 122 files
46 changes: 23 additions & 23 deletions examples/anonymous_datasignals.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,62 +15,62 @@
metawear.connect()
print("Connected")

sync_event = Event()
e = Event()
result = {}
def handler(board, signals, len):
def handler(ctx, board, signals, len):
result['length'] = len
result['signals'] = cast(signals, POINTER(c_void_p * len)) if signals is not None else None
sync_event.set()
handler_fn = FnVoid_VoidP_VoidP_UInt(handler)
e.set()
handler_fn = FnVoid_VoidP_VoidP_VoidP_UInt(handler)

class DataHandler:
def __init__(self, signal):
raw = libmetawear.mbl_mw_anonymous_datasignal_get_identifier(signal)
self.identifier = cast(raw, c_char_p).value.decode("ascii")
self.data_handler_fn = FnVoid_DataP(lambda ptr: print({"identifier": self.identifier, "epoch": ptr.contents.epoch, "value": parse_value(ptr)}))

libmetawear.mbl_mw_memory_free(raw)
self.identifier = libmetawear.mbl_mw_anonymous_datasignal_get_identifier(signal)
self.data_handler_fn = FnVoid_VoidP_DataP(lambda ctx, ptr: print({"identifier": self.identifier, "epoch": ptr.contents.epoch, "value": parse_value(ptr)}))

print("Creating anonymous signals")
libmetawear.mbl_mw_settings_set_connection_parameters(metawear.board, 7.5, 7.5, 0, 6000)
sleep(1.0)
libmetawear.mbl_mw_metawearboard_create_anonymous_datasignals(metawear.board, handler_fn)
sync_event.wait()
libmetawear.mbl_mw_metawearboard_create_anonymous_datasignals(metawear.board, None, handler_fn)
e.wait()

if (result['signals'] == None):
if (result['length'] != 0):
print("Error creating anonymous signals, status = " + str(result['length']))
else:
print("No active loggers detected")
else:
dl_event = Event()
e.clear()
libmetawear.mbl_mw_logging_stop(metawear.board)

print(str(result['length']) + " active loggers discovered")
handlers = []
for x in range(0, result['length']):
wrapper = DataHandler(result['signals'].contents[x])
libmetawear.mbl_mw_anonymous_datasignal_subscribe(result['signals'].contents[x], wrapper.data_handler_fn)
libmetawear.mbl_mw_anonymous_datasignal_subscribe(result['signals'].contents[x], None, wrapper.data_handler_fn)
handlers.append(wrapper)

def progress_update_handler(left, total):
def progress_update_handler(ctx, left, total):
if (left == 0):
dl_event.set()
e.set()

def unknown_entry_handler(id, epoch, data, length):
def unknown_entry_handler(ctx, id, epoch, data, length):
print("unknown entry = " + str(id))

print("Downloading log")
progress_update_fn = FnVoid_UInt_UInt(progress_update_handler)
unknown_entry_fn = FnVoid_UByte_Long_UByteP_UByte(unknown_entry_handler)
download_handler= LogDownloadHandler(received_progress_update = progress_update_fn,
received_unknown_entry = unknown_entry_fn, received_unhandled_entry = cast(None, FnVoid_DataP))
progress_update_fn = FnVoid_VoidP_UInt_UInt(progress_update_handler)
unknown_entry_fn = FnVoid_VoidP_UByte_Long_UByteP_UByte(unknown_entry_handler)
download_handler= LogDownloadHandler(context = None, received_progress_update = progress_update_fn,
received_unknown_entry = unknown_entry_fn, received_unhandled_entry = cast(None, FnVoid_VoidP_DataP))
libmetawear.mbl_mw_logging_download(metawear.board, 10, byref(download_handler))
dl_event.wait()
e.wait()

print("Download completed")
libmetawear.mbl_mw_macro_erase_all(metawear.board)
libmetawear.mbl_mw_debug_reset_after_gc(metawear.board)
libmetawear.mbl_mw_debug_disconnect(metawear.board)

sleep(1.0)
e.clear()
metawear.on_disconnect = lambda status: e.set()

libmetawear.mbl_mw_debug_disconnect(metawear.board)
e.wait()
16 changes: 8 additions & 8 deletions examples/multi_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class State:
def __init__(self, device):
self.device = device
self.samples = 0
self.callback = FnVoid_DataP(self.data_handler)
self.callback = FnVoid_VoidP_DataP(self.data_handler)

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

Expand All @@ -30,15 +30,15 @@ def data_handler(self, data):
for s in states:
print("configuring device")
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
libmetawear.mbl_mw_acc_set_odr(s.device.board, 25.0);
libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0);
libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board);
libmetawear.mbl_mw_acc_set_odr(s.device.board, 25.0)
libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0)
libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board)

signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(s.device.board)
libmetawear.mbl_mw_datasignal_subscribe(signal, s.callback)
libmetawear.mbl_mw_datasignal_subscribe(signal, None, s.callback)

libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board);
libmetawear.mbl_mw_acc_start(s.device.board);
libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)
libmetawear.mbl_mw_acc_start(s.device.board)

sleep(30.0)

Expand Down
19 changes: 14 additions & 5 deletions examples/scan_connect.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
# usage: python scan_connect.py
from mbientlab.metawear import MetaWear
from mbientlab.metawear.cbindings import *
from gattlib import DiscoveryService
from mbientlab.warble import *
from time import sleep

import platform
import six

selection = -1
devices = None

while selection == -1:
service = DiscoveryService("hci0")
devices = service.discover(2)
print("scanning for devices...")
devices = {}
def handler(result):
devices[result.mac] = result.name

BleScanner.set_handler(handler)
BleScanner.start()

sleep(10.0)
BleScanner.stop()

i = 0
for address, attr in devices.items():
print("[%d] %s (%s)" % (i, address, attr['name']))
for address, name in six.iteritems(devices):
print("[%d] %s (%s)" % (i, address, name))
i+= 1

msg = "Select your device (-1 to rescan): "
Expand Down
27 changes: 27 additions & 0 deletions examples/update_firmware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# usage: python update_firmware.py [mac] [version](optional)
from mbientlab.metawear import MetaWear, libmetawear
from threading import Event

import sys

device = MetaWear(sys.argv[1])
device.connect()
print("Connected")

args = {
'progress_handler': lambda p: print("upload: %d%%" % (p)),
}
if (len(sys.argv) >= 3):
args['version'] = sys.argv[2]

e = Event()
result = []
def dfu_handler(err):
result.append(err)
e.set()

device.update_firmware_async(dfu_handler, **args)
e.wait()

if (result[0] != None):
raise result[0]
Loading

0 comments on commit 1a7e92c

Please sign in to comment.