def timer_created(timer):
    global bsignal
    bsignal = libmetawear.mbl_mw_settings_get_battery_state_data_signal(device.board)
    libmetawear.mbl_mw_datasignal_subscribe(bsignal, batt_handler_fn)
    libmetawear.mbl_mw_event_record_commands(timer)
    libmetawear.mbl_mw_datasignal_read(bsignal)
    libmetawear.mbl_mw_event_end_record(timer, getStatusFn_handler_fn)
    libmetawear.mbl_mw_timer_start(timer)
示例#2
0
def setup_dc_event(device):

    # Setup disconnect event to blink the blue led 10x when fired
    dc_event = libmetawear.mbl_mw_settings_get_disconnect_event(device.board)
    libmetawear.mbl_mw_event_record_commands(dc_event)
    #libmetawear.mbl_mw_led_write_pattern(device.board, byref(pattern), LedColor.BLUE)
    #libmetawear.mbl_mw_led_play(device.board)
    libmetawear.mbl_mw_debug_reset(device.board)
    libmetawear.mbl_mw_event_end_record(dc_event, getStatusFn_handler_fn)
示例#3
0
    def _setup_read_event(self, timer, signal):
        e = Event()
        result = [None]

        def commands_recorded(ctx, event, status):
            result[0] = RuntimeError("Could not create read event") if status != Const.STATUS_OK else None
            e.set()
        fn_wrapper = FnVoid_VoidP_VoidP_Int(commands_recorded)

        libmetawear.mbl_mw_event_record_commands(timer)
        libmetawear.mbl_mw_datasignal_read(signal)
        libmetawear.mbl_mw_event_end_record(timer, None, fn_wrapper)
        e.wait()
        
        if (result[0] is RuntimeError):
            raise result[0]
示例#4
0
def createTimer(mmr):
    mmr.parameters = I2cReadParameters(device_addr=AD7745_ADDR,
                                       register_addr=REG_CAP_DATA)

    e = Event()

    mmr.timer = create_voidp(
        lambda fn: libmetawear.mbl_mw_timer_create_indefinite(
            mmr.device.board, 11, 0, None, fn),
        resource="timer",
        event=e)
    libmetawear.mbl_mw_event_record_commands(mmr.timer)
    libmetawear.mbl_mw_datasignal_read_with_parameters(mmr.i2c_signal,
                                                       byref(mmr.parameters))
    create_voidp_int(
        lambda fn: libmetawear.mbl_mw_event_end_record(mmr.timer, None, fn),
        event=e)
    print(mmr.timer)
    mmr.timer_id = libmetawear.mbl_mw_timer_get_id(mmr.timer)
    print("id" + str(mmr.timer_id))
示例#5
0
print("Connected to " + d.address)

try:
    # setup events
    e = Event()
    print("Configuring device")
    
    # get temp signal and setup logger
    signal = libmetawear.mbl_mw_multi_chnl_temp_get_temperature_data_signal(d.board, MetaWearRProChannel.ON_BOARD_THERMISTOR)
    logger = create_voidp(lambda fn: libmetawear.mbl_mw_datasignal_log(signal, None, fn), resource = "temp_logger", event = e)
    
    # create a timer
    timer = create_voidp(lambda fn: libmetawear.mbl_mw_timer_create_indefinite(d.board, 1000, 0, None, fn), resource = "timer", event = e)
    
    # record an event
    libmetawear.mbl_mw_event_record_commands(timer)
    
    # event is to read temp signal
    libmetawear.mbl_mw_datasignal_read(signal)
    create_voidp_int(lambda fn: libmetawear.mbl_mw_event_end_record(timer, None, fn), event = e)
    
    # start logging
    libmetawear.mbl_mw_logging_start(d.board, 0)
    
    # start timer
    libmetawear.mbl_mw_timer_start(timer)
    
    # log 10s
    print("Logging data for 10s")
    sleep(10.0)
    
    # wait 1s
    sleep(1.0)

    # setup any motion
    libmetawear.mbl_mw_acc_bosch_set_any_motion_count(s.device.board, 2)
    libmetawear.mbl_mw_acc_bosch_set_any_motion_threshold(s.device.board, 0.1)
    libmetawear.mbl_mw_acc_bosch_write_motion_config(s.device.board, AccBoschMotion.ANYMOTION)
    print("setup bmi160 motion recognition")

    # get motion signal    
    motion_signal = libmetawear.mbl_mw_acc_bosch_get_motion_data_signal(s.device.board)
    print("get motion signal")

    # create event that changes count based on motion signal
    s.events["event"].clear()
    libmetawear.mbl_mw_event_record_commands(motion_signal)
    libmetawear.mbl_mw_dataprocessor_passthrough_set_count(s.passthrough_signal, 10)
    print("create event that changes counter based on motion")
    libmetawear.mbl_mw_event_end_record(motion_signal, None, event_created_fn)
    s.events["event"].wait()

    # start
    print("Start")
    libmetawear.mbl_mw_logging_start(s.device.board, 0)
    libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)
    libmetawear.mbl_mw_acc_start(s.device.board)       
    libmetawear.mbl_mw_acc_bosch_enable_motion_detection(s.device.board)
    libmetawear.mbl_mw_acc_bosch_start(s.device.board)

print("0 min")
sleep(60.0)
    # create RMS - root mean square of acc X,Y,Z
    rms = create_voidp(lambda fn: libmetawear.mbl_mw_dataprocessor_rms_create(
        acc_signal, None, fn),
                       resource="RMS",
                       event=e)
    print("RMS created")

    # setup averager - averages over 8 RMS samples @ 50Hz
    avg = create_voidp(lambda fn: libmetawear.
                       mbl_mw_dataprocessor_average_create(rms, 8, None, fn),
                       resource="averager",
                       event=e)
    print("Averager created")

    # setup event on avg - reset averager
    libmetawear.mbl_mw_event_record_commands(avg)
    libmetawear.mbl_mw_dataprocessor_average_reset(avg)
    create_voidp_int(
        lambda fn: libmetawear.mbl_mw_event_end_record(avg, None, fn), event=e)

    # setup threshold detector - detect anything above 1
    ths = create_voidp(
        lambda fn: libmetawear.mbl_mw_dataprocessor_threshold_create(
            avg, ThresholdMode.BINARY, 1.0, 0.0, None, fn),
        resource="threshold detector",
        event=e)
    print("Threshold detector created")

    # setup logger - log the final signal of the averaged data
    ths_logger = create_voidp(
        lambda fn: libmetawear.mbl_mw_datasignal_log(ths, None, fn),
示例#8
0
    lambda fn: libmetawear.mbl_mw_dataprocessor_comparator_create(
        threshold, ComparatorOperation.EQ, -1.0, None, fn),
    resource="ths_below",
    event=e)
ths_above = create_voidp(
    lambda fn: libmetawear.mbl_mw_dataprocessor_comparator_create(
        threshold, ComparatorOperation.EQ, 1.0, None, fn),
    resource="ths_above",
    event=e)

pattern = LedPattern(pulse_duration_ms=1000,
                     high_time_ms=500,
                     high_intensity=16,
                     low_intensity=16,
                     repeat_count=Const.LED_REPEAT_INDEFINITELY)
libmetawear.mbl_mw_event_record_commands(ths_below)
libmetawear.mbl_mw_led_write_pattern(device.board, byref(pattern),
                                     LedColor.BLUE)
libmetawear.mbl_mw_led_play(device.board)
create_voidp_int(
    lambda fn: libmetawear.mbl_mw_event_end_record(ths_below, None, fn),
    event=e)

libmetawear.mbl_mw_event_record_commands(ths_above)
libmetawear.mbl_mw_led_stop_and_clear(device.board)
create_voidp_int(
    lambda fn: libmetawear.mbl_mw_event_end_record(ths_above, None, fn),
    event=e)

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