Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
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)
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
 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!")
Ejemplo n.º 8
0
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))
Ejemplo n.º 10
0
    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)