def download_data(self): libmetawear.mbl_mw_timer_remove(self.timer) libmetawear.mbl_mw_logging_stop(self.device.board) e = Event() def progress_update_handler(context, entries_left, total_entries): if (entries_left == 0): e.set() fn_wrapper = FnVoid_VoidP_UInt_UInt(progress_update_handler) download_handler= LogDownloadHandler(context = None, \ received_progress_update = fn_wrapper, \ received_unknown_entry = cast(None, FnVoid_VoidP_UByte_Long_UByteP_UByte), \ received_unhandled_entry = cast(None, FnVoid_VoidP_DataP)) callback = FnVoid_VoidP_DataP(lambda ctx, p: print("%f" % (parse_value(p)))) libmetawear.mbl_mw_logger_subscribe(self.logger, None, callback) libmetawear.mbl_mw_logging_download(self.device.board, 0, byref(download_handler)) e.wait()
def download_data(self, name='blank'): try: libmetawear.mbl_mw_settings_set_connection_parameters( self.device.board, 7.5, 7.5, 0, 6000) time.sleep(1.0) e = Event() def progress_update_handler(context, entries_left, total_entries): if (entries_left == 0): e.set() fn_wrapper = FnVoid_VoidP_UInt_UInt(progress_update_handler) download_handler = LogDownloadHandler(context = None, \ received_progress_update = fn_wrapper, \ received_unknown_entry = cast(None, FnVoid_VoidP_UByte_Long_UByteP_UByte), \ received_unhandled_entry = cast(None, FnVoid_VoidP_DataP)) # print('Opening log file to write') f = open(name + self.default_name, 'a') callback = FnVoid_VoidP_DataP(lambda ctx, p: print( "{epoch: %d, value: %s}" % (p.contents.epoch, parse_value(p)), file=f)) libmetawear.mbl_mw_logger_subscribe(self.logger, None, callback) libmetawear.mbl_mw_logging_download(self.device.board, 0, byref(download_handler)) e.wait() # close the file, process the data into a csv, then delete the original file f.close() self.process_data(name) # os.remove(name + self.default_name) logging.info('data downloaded') return 1 except RuntimeError as err: print(err) logging.info('runtime error in download_data() occurred') return 0
received_unknown_entry = cast(None, FnVoid_VoidP_UByte_Long_UByteP_UByte), \ received_unhandled_entry = cast(None, FnVoid_VoidP_DataP)) def data_handler(p): global read_count read_count += 2 #print("{epoch: %d, value: %s}" % (p.contents.epoch, parse_value(p))) callback = FnVoid_VoidP_DataP(lambda ctx, p: data_handler(p)) print("Subscribe to logger") libmetawear.mbl_mw_logger_subscribe(logger, None, callback) print("Download data") dl_time = time.time() libmetawear.mbl_mw_logging_download(d.board, 0, byref(download_handler)) e.wait() dl_time = time.time() - dl_time print("Entry Read Count: %d" % (read_count)) print("Entry Read Rate: %0.1f entries/s" % (read_count / dl_time)) except RuntimeError as err: print(err) finally: print("Resetting device") e = Event() d.on_disconnect = lambda status: e.set() print("Debug reset") libmetawear.mbl_mw_debug_reset(d.board) e.wait()