|
15 | 15 | metawear.connect() |
16 | 16 | print("Connected") |
17 | 17 |
|
18 | | -sync_event = Event() |
| 18 | +e = Event() |
19 | 19 | result = {} |
20 | | -def handler(board, signals, len): |
| 20 | +def handler(ctx, board, signals, len): |
21 | 21 | result['length'] = len |
22 | 22 | 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) |
25 | 25 |
|
26 | 26 | class DataHandler: |
27 | 27 | 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)})) |
33 | 30 |
|
34 | 31 | print("Creating anonymous signals") |
35 | 32 | libmetawear.mbl_mw_settings_set_connection_parameters(metawear.board, 7.5, 7.5, 0, 6000) |
36 | 33 | 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() |
39 | 36 |
|
40 | 37 | if (result['signals'] == None): |
41 | 38 | if (result['length'] != 0): |
42 | 39 | print("Error creating anonymous signals, status = " + str(result['length'])) |
43 | 40 | else: |
44 | 41 | print("No active loggers detected") |
45 | 42 | else: |
46 | | - dl_event = Event() |
| 43 | + e.clear() |
47 | 44 | libmetawear.mbl_mw_logging_stop(metawear.board) |
48 | 45 |
|
49 | 46 | print(str(result['length']) + " active loggers discovered") |
50 | 47 | handlers = [] |
51 | 48 | for x in range(0, result['length']): |
52 | 49 | 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) |
54 | 51 | handlers.append(wrapper) |
55 | 52 |
|
56 | | - def progress_update_handler(left, total): |
| 53 | + def progress_update_handler(ctx, left, total): |
57 | 54 | if (left == 0): |
58 | | - dl_event.set() |
| 55 | + e.set() |
59 | 56 |
|
60 | | - def unknown_entry_handler(id, epoch, data, length): |
| 57 | + def unknown_entry_handler(ctx, id, epoch, data, length): |
61 | 58 | print("unknown entry = " + str(id)) |
62 | 59 |
|
63 | 60 | 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)) |
68 | 65 | libmetawear.mbl_mw_logging_download(metawear.board, 10, byref(download_handler)) |
69 | | - dl_event.wait() |
| 66 | + e.wait() |
70 | 67 |
|
71 | 68 | print("Download completed") |
72 | 69 | libmetawear.mbl_mw_macro_erase_all(metawear.board) |
73 | 70 | libmetawear.mbl_mw_debug_reset_after_gc(metawear.board) |
74 | | - libmetawear.mbl_mw_debug_disconnect(metawear.board) |
75 | 71 |
|
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() |
0 commit comments