private void initialized(IntPtr board, int status) { System.Diagnostics.Debug.WriteLine("Board Initialized!"); mbl_mw_metawearboard_set_time_for_response(board, 500); mbl_mw_acc_set_odr(board, 50f); mbl_mw_acc_write_acceleration_config(board); var acc_signal = mbl_mw_acc_get_acceleration_data_signal(board); dataprocDelegates["ff"] = new Fn_IntPtr(ff => { dataprocDelegates["ff_handler"] = new Fn_IntPtr(dataPtr => { System.Diagnostics.Debug.WriteLine("In FreeFall"); }); logReadyDelegates[0] = new Fn_IntPtr(logger => { mbl_mw_logger_subscribe(logger, dataprocDelegates["ff_handler"]); System.Diagnostics.Debug.WriteLine("Free Fall logger ready"); System.Diagnostics.Debug.WriteLine("Processor Setup Complete"); }); mbl_mw_datasignal_log(ff, logReadyDelegates[0]); }); dataprocDelegates["no_ff"] = new Fn_IntPtr(noFF => { dataprocDelegates["no_ff_handler"] = new Fn_IntPtr(dataPtr => { System.Diagnostics.Debug.WriteLine("Not in FreeFall"); }); logReadyDelegates[1] = new Fn_IntPtr(logger => { mbl_mw_logger_subscribe(logger, dataprocDelegates["no_ff_handler"]); System.Diagnostics.Debug.WriteLine("No Free Fall logger ready"); }); mbl_mw_datasignal_log(noFF, logReadyDelegates[1]); }); dataprocDelegates["threshold"] = new Fn_IntPtr(ths => { mbl_mw_dataprocessor_comparator_create(ths, Comparator.Operation.EQ, 1, dataprocDelegates["no_ff"]); mbl_mw_dataprocessor_comparator_create(ths, Comparator.Operation.EQ, -1, dataprocDelegates["ff"]); }); dataprocDelegates["avg"] = new Fn_IntPtr(avg => { mbl_mw_dataprocessor_threshold_create(avg, Threshold.Mode.BINARY, 0.5f, 0, dataprocDelegates["threshold"]); }); dataprocDelegates["rss"] = new Fn_IntPtr(rss => { mbl_mw_dataprocessor_average_create(rss, 4, dataprocDelegates["avg"]); }); //whoops, wrong fn name mbl_mw_dataprocessor_rss_create(acc_signal, dataprocDelegates["rss"]); }
private bool setup_logging_signals() { try { mbl_mw_logging_clear_entries(getBoard()); } catch (Exception e) { info("failed to clear log on MetaWear device: " + e); } mbl_mw_metawearboard_set_time_for_response(getBoard(), 500); setup_device_counters = 0; IntPtr accSignal = getAccSignal(false); if (accSignal.ToInt64() == 0) { return(false); } IntPtr gyroSignal = getGyroSignal(); if (gyroSignal.ToInt64() == 0) { return(false); } config_acc(accSignal); config_gyro(gyroSignal); setup_GPIO(); System.Diagnostics.Debug.WriteLine("GOOD: setup data signals, now registering logger"); var logAccFn = new Fn_IntPtr((IntPtr _accLogger) => { accLogger = _accLogger; if (accLogger.ToInt64() != 0) { System.Diagnostics.Debug.WriteLine("GOOD: acc-logger ready"); mbl_mw_logger_subscribe(accLogger, accDataHandler); failed_to_create_acc_logger = false; } else { System.Diagnostics.Debug.WriteLine("ERROR: failed to create the acc-logger"); failed_to_create_acc_logger = true; } setup_device_counters++; }); var logGyroFn = new Fn_IntPtr((IntPtr _gyroLogger) => { gyroLogger = _gyroLogger; if (gyroLogger.ToInt64() != 0) { System.Diagnostics.Debug.WriteLine("GOOD: gyro-logger ready"); mbl_mw_logger_subscribe(gyroLogger, gyroDataHandler); failed_to_create_gyro_logger = false; } else { System.Diagnostics.Debug.WriteLine("ERROR: failed to create the gyro-logger"); failed_to_create_gyro_logger = true; } setup_device_counters++; }); if (useAccel) { mbl_mw_datasignal_log(accSignal, logAccFn); } if (useGyro) { mbl_mw_datasignal_log(gyroSignal, logGyroFn); } string dir = ApplicationData.Current.LocalFolder.Path; this.textBox.Text = "storing data in: " + dir; disableOptions(); return(true); }