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)
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)
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]
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]
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: