def start_test(self, time_tests): for device in self.device_list: logger.info_log(f"Start device: {device.device.address}") signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( device.device.board) libmetawear.mbl_mw_datasignal_subscribe(signal, None, device.callback) libmetawear.mbl_mw_acc_enable_acceleration_sampling( device.device.board) libmetawear.mbl_mw_acc_start(device.device.board) sleep(5.0) sleep(time_tests) for device in self.device_list: libmetawear.mbl_mw_acc_stop(device.device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling( device.device.board) signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( device.device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal) libmetawear.mbl_mw_debug_disconnect(device.device.board) logger.info_log(f"Stop device: {device.device.address}") if DEBUG_STREAM_ACC: start_debug() for s in self.device_list: if BATCH_STORE: self.strage.store(s.data) print("%s -> %d" % (s.device.address, s.samples)) end_debug()
def stop(self): for s in self.states: # Disable acceleration libmetawear.mbl_mw_acc_stop(s.device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling( s.device.board) signal_acceleration = libmetawear.mbl_mw_acc_get_acceleration_data_signal( s.device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal_acceleration) # Disable gyro libmetawear.mbl_mw_gyro_bmi160_stop(s.device.board) libmetawear.mbl_mw_gyro_bmi160_disable_rotation_sampling( s.device.board) signal_gyro = libmetawear.mbl_mw_gyro_bmi160_get_rotation_data_signal( s.device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal_gyro) # Disable magnometer libmetawear.mbl_mw_mag_bmm150_stop(s.device.board) libmetawear.mbl_mw_mag_bmm150_disable_b_field_sampling( s.device.board) # Disconnect board and turn off LED libmetawear.mbl_mw_debug_disconnect(s.device.board) return
def reset(device): libmetawear.mbl_mw_logging_stop(device.board) libmetawear.mbl_mw_logging_clear_entries(device.board) libmetawear.mbl_mw_macro_erase_all(device.board) libmetawear.mbl_mw_debug_reset_after_gc(device.board) print("Erase logger and clear all entries") sleep(1.0) libmetawear.mbl_mw_debug_disconnect(device.board) sleep(1.0)
def cleanup(self): if self.device == None: self.log("ERROR", "Device not available") return False # Attempt to connect self.log("INFO", "Disconnecting from device...") lmw.mbl_mw_debug_disconnect(self.device.board) self.log("INFO", "Disconnected.") return True
def run(self): loop_rate = rospy.Rate(100) while not rospy.is_shutdown(): loop_rate.sleep() print("Disconnect") libmetawear.mbl_mw_sensor_fusion_stop(self.device.board) #libmetawear.mbl_mw_datasignal_unsubscribe(self.gyro_signal) #libmetawear.mbl_mw_datasignal_unsubscribe(self.acc_signal) libmetawear.mbl_mw_datasignal_unsubscribe(self.rot_signal) #libmetawear.mbl_mw_datasignal_unsubscribe(self.acc_lin_signal) #libmetawear.mbl_mw_datasignal_unsubscribe(self.g_signal) libmetawear.mbl_mw_debug_disconnect(self.device.board)
def reset(device) -> None: """ This function resets your device if its stuck in a bad state :param device: :return None: """ # Stops data logging libmetawear.mbl_mw_logging_stop(device.board) # Clear the logger of saved entries libmetawear.mbl_mw_logging_clear_entries(device.board) # Remove all macros on the flash memory libmetawear.mbl_mw_macro_erase_all(device.board) # Restarts the board after performing garbage collection libmetawear.mbl_mw_debug_reset_after_gc(device.board) libmetawear.mbl_mw_debug_disconnect(device.board) device.disconnect()
def stop(self): libmetawear.mbl_mw_sensor_fusion_stop(self.device.board) AccSignal = libmetawear.mbl_mw_sensor_fusion_get_data_signal( self.device.board, SensorFusionData.LINEAR_ACC) libmetawear.mbl_mw_datasignal_unsubscribe(AccSignal) gpioSignal = libmetawear.mbl_mw_gpio_get_pin_monitor_data_signal( self.device.board, 0) libmetawear.mbl_mw_datasignal_unsubscribe(gpioSignal) libmetawear.mbl_mw_gpio_stop_pin_monitoring(self.device.board, 0) resetSignal = libmetawear.mbl_mw_gpio_get_pin_monitor_data_signal( self.device.board, 1) libmetawear.mbl_mw_datasignal_unsubscribe(resetSignal) libmetawear.mbl_mw_gpio_stop_pin_monitoring(self.device.board, 1) libmetawear.mbl_mw_debug_disconnect(self.device.board) sleep(5.0) self.device.disconnect() sleep(1.0) print("DISCONNECTED!")
import sys device = MetaWear('FB:81:71:31:92:7A') device.connect() # Callback function to process/parse the battery data def data_handler(self, ctx, data): print("%s -> %s" % (self.device.address, parse_value(data))) callback = FnVoid_VoidP_DataP(data_handler) print("Configuring device") libmetawear.mbl_mw_settings_set_connection_parameters(device.board, 7.5, 7.5, 0, 6000) battery_signal = libmetawear.mbl_mw_settings_get_battery_state_data_signal( device.board) libmetawear.mbl_mw_datasignal_subscribe(battery_signal, None, callback) sleep(1.0) libmetawear.mbl_mw_datasignal_read(battery_signal) sleep(5.0) libmetawear.mbl_mw_datasignal_unsubscribe(battery_signal) libmetawear.mbl_mw_debug_disconnect(device.board) device.on_disconnect = lambda status: print("we are disconnected!") device.disconnect()
libmetawear.mbl_mw_settings_set_connection_parameters(states[0].device.board, 7.5, 7.5, 0, 6000) sleep(1.5) # start reading in acc data libmetawear.mbl_mw_acc_set_odr(states[0].device.board, 100.0) libmetawear.mbl_mw_acc_set_range(states[0].device.board, 16.0) libmetawear.mbl_mw_acc_write_acceleration_config(states[0].device.board) signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( states[0].device.board) libmetawear.mbl_mw_datasignal_subscribe(signal, None, states[0].callback) libmetawear.mbl_mw_acc_enable_acceleration_sampling(states[0].device.board) libmetawear.mbl_mw_acc_start(states[0].device.board) # continue running for number of seconds defined by user when running script sleep(int(sys.argv[1])) libmetawear.mbl_mw_acc_stop(states[0].device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling(states[0].device.board) # unsubscribe from stream and disconnect from device signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( states[0].device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal) libmetawear.mbl_mw_debug_disconnect(states[0].device.board) # print total number of samples received print("%s -> %d" % (states[0].device.address, states[0].samples))
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) handlers.append(wrapper) def progress_update_handler(left, total): if (left == 0): dl_event.set() def unknown_entry_handler(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)) libmetawear.mbl_mw_logging_download(metawear.board, 10, byref(download_handler)) dl_event.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)