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)
Exemple #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)
Exemple #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]
Exemple #4
0
def end_event_record(evt):
    result = [None]

    def handler(ctx, pointer, status):
        if (status != Const.STATUS_OK):
            result[0] = RuntimeError(
                "Event recording returned a non-zero status (%d)" % (status))
        e.set()

    callback_wrapper = FnVoid_VoidP_VoidP_Int(handler)
    libmetawear.mbl_mw_event_end_record(evt, None, callback_wrapper)
    e.wait()

    e.clear()
    if (result[0] is RuntimeError):
        raise result[0]
Exemple #5
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))
 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)
 
 # remove timer
 libmetawear.mbl_mw_timer_remove(timer)
 
 # remove logger
    d.board, MetaWearRProChannel.ON_BOARD_THERMISTOR)

# subscribe to temp signal
libmetawear.mbl_mw_datasignal_subscribe(signal, None, callback)

# create timer - fires ever 1000ms
timer = create_voidp(lambda fn: libmetawear.mbl_mw_timer_create_indefinite(
    d.board, 1000, 0, None, fn),
                     resource="timer",
                     event=e)

# create event based on timer - read temp when timer fires
libmetawear.mbl_mw_event_record_commands(timer)
libmetawear.mbl_mw_datasignal_read(signal)
create_voidp_int(
    lambda fn: libmetawear.mbl_mw_event_end_record(timer, None, fn), event=e)

# start timer
libmetawear.mbl_mw_timer_start(timer)

# wait 5s
print("Stream temp data for 5s")
sleep(5.0)

# remove timer
libmetawear.mbl_mw_timer_remove(timer)
sleep(1.0)

# remove event
libmetawear.mbl_mw_event_remove_all(d.board)
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)
print("1 min")
sleep(60.0)
print("2 min")
    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)

create_voidp_int(
    lambda fn: libmetawear.mbl_mw_macro_end_record(device.board, None, fn),
    event=e)
                                                     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
    event_handler = FnVoid_VoidP_VoidP_Int(lambda event, ctx, s: e.set())
    e.clear()
    libmetawear.mbl_mw_event_record_commands(motion_signal)
    libmetawear.mbl_mw_dataprocessor_passthrough_set_count(
        s.passthrough_proc, 50)
    print("create event that changes counter based on motion")
    libmetawear.mbl_mw_event_end_record(motion_signal, None, event_handler)
    e.wait()

    # start
    print("Start")
    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, AccBoschMotion.ANYMOTION)
    libmetawear.mbl_mw_acc_bosch_start(s.device.board)

# wait 10 s
sleep(10.0)

# tear down
for s in states: